我已经使用 SetCustomUI VBA 方法在 MS Project 2010 的功能区中添加了一个选项卡,详情如下:http: //msdn.microsoft.com/en-us/library/ee767705。
选项卡 XML 加载正常,布局设置正确。问题是在执行与我的按钮和编辑框关联的 VBA 回调时,Project 似乎没有使用此处定义的标准方法签名:http: //msdn.microsoft.com/en-us/library/aa722523.aspx#a16c7df5 -93f3-4920-baa8-7b7290794c15_Ribbon。
这些签名在 Excel 2010 等“更标准”的 Office 程序中工作,但是当我在 Project 中编写具有相同参数的方法时,除非我从方法中删除所有参数,否则会弹出异常。这对于按钮(在第一篇 MSDN 文章中进行了演示)是可以的,但是对于 editBoxes 的“onChange”回调,在回调中没有提供任何参数,我无法读取在 editBox 中输入的文本,使得他们没用。应该如何在 Project 中访问功能区编辑框的内容?项目中是否忽略了对该字符串的 VBA 访问?只能通过托管代码访问吗?
这是我尝试过的 XML / VBA 对的示例:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon >
<tabs >
<tab
id="NavHelper"
label="Nav Helper">
<group
id="Group1"
label="Search">
<box id="Box1" >
<editBox
id="DateBegin"
label="Dates from"
sizeString="11/11/1111"
onChange="DateBegin_onChange"/>
<editBox
id="DateEnd"
label="to"
sizeString="11/11/1111"
onChange="DateEnd_onChange"/>
</box >
<button
id="doSearch"
imageMso="InstantSearch"
label="Search"
size="large"
onAction="doSearch_onAction"/>
</group >
</tab >
</tabs >
</ribbon >
</customUI >
和 VBA:
Public Sub DateBegin_onChange(control As IRibbonControl, text As String)
MsgBox text
End Sub
Public Sub doSearch_onAction(control As IRibbonControl)
MsgBox "pressed!"
End Sub
因此,对于这个示例,该设置在 Excel 中完美运行,但如果我将它带到 Project 中,除非我从方法定义中删除所有参数,否则回调将不会运行,此时它们运行,但无用。有任何想法吗?