如何使用VBA读取自定义功能区选项卡上的editBox中输入的文本?

时间:2012-08-01 14:54:09

标签: vba ribbon ms-project ribbonx

我已使用SetCustomUI VBA方法向MS Project 2010中的功能区添加了一个选项卡,如下所示:http://msdn.microsoft.com/en-us/library/ee767705

标签XML加载正常,布局设置正确。问题是当执行与我的按钮和editBox相关联的VBA回调时,Project似乎没有使用此处定义的标准方法签名:http://msdn.microsoft.com/en-us/library/aa722523.aspx#a16c7df5-93f3-4920-baa8-7b7290794c15_Ribbon

这些签名适用于“更标准”的Office程序,如Excel 2010,但是当我在Project中使用相同的参数编写方法时,除非从方法中删除所有参数,否则会出现异常弹出窗口。这对于按钮(在第一篇MSDN文章中演示)是可以的,但对于editBoxes的“onChange”回调,在回调中没有提供参数,我无法读取在editBox中输入的文本,他们没用。如何在Project中访问Ribbon editBox的内容? Project中是否忽略了对此String的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,则回调将不会运行,除非我从方法定义中删除所有参数,此时它们会运行,但是无用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过Microsoft Office的自定义UI编辑器?

请参阅http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/06/7293.aspx

我没有在MS Project工作,但在其他办公程序中,您可以输入customUI XML并对其进行验证,并获得相应的VBA功能签名。

如果我在Excel中尝试你的customUI XML并尝试验证(我没有Project ...),我会收到一个错误,说明命名空间错误。