Microsoft Project的RibbonXml VBA项目中不能使用带参数的过程
2012-08-15 15:18
246 查看
如果在Microsoft Project 使用以下代码:
会报"Automation error"的错误。其原因在于不能使用带项目的参数。如果改成下面这个样子就可以了:
欢迎访问《许阳的红泥屋》
Sub gallery_MSN_getItemCount(control As IRibbonControl, ByRef returnedVal) On Error Resume Next returnedVal = 12 End Sub Public Sub gallery_MSN_getItemLabels(control As IRibbonControl, index As Integer, ByRef returnedVal) 'This callback runs for every item (label). 'This example uses the values in the array for Label names. Dim Labelname As Variant On Error Resume Next Labelname = _ Array("Sheila Webster", _ "Brian Main", _ "Susan Zhang", _ "Anne Walzer", _ "Andrea Vogel", _ "Ronda Viescas", _ "Norman Harker", _ "Michelle Wells", _ "Wilma Yang", _ "Angel Wang", _ "Raymond Denny", _ "June Winograd") On Error Resume Next returnedVal = Labelname(index) On Error GoTo 0 End Sub Sub gallery_MSN_Click(control As IRibbonControl, id As String, index As Integer) 'Call the macro that belongs to the label when you click one of the labels. 'Example: When you click the first label it runs the macro named "macro_1". On Error Resume Next MsgBox ("It works !") On Error GoTo 0 End Sub Sub test() Dim strXML As String strXML = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" strXML = strXML & "<mso:ribbon>" strXML = strXML & "<mso:qat/>" strXML = strXML & " <mso:tabs>" strXML = strXML & " <mso:tab id=""PlannersTab"" label=""Planners"" insertBeforeQ=""mso:TabResource"">" strXML = strXML & " <mso:group id=""GroupMove"" label=""Move"" autoScale=""true"">" strXML = strXML & " <mso:gallery id=""MSN"" " strXML = strXML & " label=""Go to MSN"" " strXML = strXML & " imageMso=""MenuTaskWellArrange"" " strXML = strXML & " size=""large""" strXML = strXML & " columns=""3"" " strXML = strXML & " rows=""10"" " strXML = strXML & " getItemCount=""gallery_MSN_getItemCount"" " strXML = strXML & " getItemLabel=""gallery_MSN_getItemLabels"" " strXML = strXML & " showItemLabel=""true"" " strXML = strXML & " onAction=""gallery_MSN_Click"" >" strXML = strXML & " </mso:gallery>" strXML = strXML & " </mso:group>" strXML = strXML & " </mso:tab>" strXML = strXML & " </mso:tabs>" strXML = strXML & "</mso:ribbon>" strXML = strXML & "</mso:customUI>" ActiveProject.SetCustomUI (strXML) End Sub
会报"Automation error"的错误。其原因在于不能使用带项目的参数。如果改成下面这个样子就可以了:
Option Explicit Sub gallery_MSN_Click() 'Call the macro that belongs to the label when you click one of the labels. 'Example: When you click the first label it runs the macro named "macro_1". On Error Resume Next MsgBox ("It works") On Error GoTo 0 End Sub Private Sub AddHighlightRibbon() Dim ribbonXml As String Dim MyArray As Variant Dim item As Variant Dim cnt As Integer cnt = 0 MyArray = Array("Sheila Webster", "Brian Main", "Susan Zhang", "Anne Walzer", "Andrea Vogel", "Ronda Viescas", _ "Norman Harker", _ "Michelle Wells", _ "Wilma Yang", _ "Angel Wang", _ "Raymond Denny", _ "June Winograd") ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" ribbonXml = ribbonXml + " <mso:ribbon>" ribbonXml = ribbonXml + " <mso:qat/>" ribbonXml = ribbonXml + " <mso:tabs>" ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">" ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">" ribbonXml = ribbonXml + " <mso:gallery id=""MSN"" " ribbonXml = ribbonXml + " label=""Go to MSN"" " ribbonXml = ribbonXml + " imageMso=""MenuTaskWellArrange"" " ribbonXml = ribbonXml + " size=""large""" ribbonXml = ribbonXml + " columns=""3"" " ribbonXml = ribbonXml + " rows=""10"" " ribbonXml = ribbonXml + " showItemLabel=""true"" " ribbonXml = ribbonXml + " onAction=""gallery_MSN_Click"" >" For Each item In MyArray ribbonXml = ribbonXml + " <mso:item id=""item" + CStr(cnt) + """ label=""" + item + """></mso:item>" cnt = cnt + 1 Next ribbonXml = ribbonXml + " </mso:gallery>" ribbonXml = ribbonXml + " </mso:group>" ribbonXml = ribbonXml + " </mso:tab>" ribbonXml = ribbonXml + " </mso:tabs>" ribbonXml = ribbonXml + " </mso:ribbon>" ribbonXml = ribbonXml + "</mso:customUI>" ActiveProject.SetCustomUI (ribbonXml) End Sub
欢迎访问《许阳的红泥屋》
相关文章推荐
- Microsoft Project的RibbonXml VBA项目中不能使用带参数的过程
- 使用mssql2008新特性(存储过程参数类型使用"用户自定义表"来实现批量DML更新多表)解决项目里遇到的性能问题
- myeclipse不能使用默认编辑器打开导入的struts项目的struts-config.xml,Therefore the MyEclipse Struts Editor may not be u
- 使用SpringSide 3.1.4.3开发Web项目的全过程(上)
- SQL Server存储过程中使用表值作为输入参数示例
- Qt(C++)项目中使用 Basler 工业相机(2 参数设置)
- 存储过程使用 in 添加多个参数的情况处理方式【转】
- Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
- 项目开发中的使用过程疑问
- 使用get方式提交参数需要注意,参数中不能有\
- 使用Microsoft.Practices.EnterpriseLibrary.Data调用存数过程Output参数注意事项
- PL/SQL块或者存储过程中不能执行DDL,可以使用动态SQL
- 使用ADO.NET对象调用存储过程的输入和输出参数
- 数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
- ruby on rails新项目不使用数据库,配置过程记录
- HOW TO:使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 存储过程: 函数 不能在SQL中使用
- 在flash builder 4.6中使用ant编译项目的详细过程
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。
- 使用.Net 1.1的项目,TreeView控件不能正常显示