gpt4 book ai didi

VBA 从 IRibbonUI 获取参数

转载 作者:行者123 更新时间:2023-12-04 22:00:52 25 4
gpt4 key购买 nike

所以我有一个看起来像的自定义功能区

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonLoadFunc" >

和一个函数
Private Sub RibbonLoadFunc(Ribbon As IRibbonUI)
MsgBox "Hello World"
End Sub

因此,当我打开文档时,它会按预期在屏幕上打印“Hello World”。现在,我的问题是,由于对 IRibbonUI 的引用被传递到函数中,我可以获得底层元素字段的值吗?由于功能区被定义为 XML 文档,我想我应该能够访问所述文档中的所有元素。所以,例如,如果我也有
<tab id="myTab">
<group id="myGroup">
<button id="myButton" onAction="someAction" label="someLabel"/>
</group>
</tab>

有没有办法打印 myButton 的标签“someLabel”,而不是“Hello World”?

或者,有没有办法将常量传递到 IRibbonUI 的 onLoad 函数中?

最佳答案

这个问题太宽泛了,您确实需要对使用 Ribbon XML 进行一些广泛的研究。自从新的 JS API 发布以来,微软在隐藏文档方面做得很好,所以我整理了一个链接列表并将其发布在 MSDN 论坛上:https://social.msdn.microsoft.com/Forums/office/en-US/ba8c9d0b-7312-4503-8167-f2ef86f17435/information-on-the-office-fluent-ui-ribbon-for-developers?forum=officegeneral .我建议您从“为开发人员定制 Office 2007 Fluent UI”的 3 部分系列开始。

不过,简而言之,功能区 UI 通过“回调”与代码交互 - 所有交互都必须由功能区本身启动。没有办法像您习惯使用 VBA 那样“查询”功能区对象及其控件。 VSTO 扩展确实提供了这一点,只要您想要的功能区只需要其功能区设计器支持的东西。但是在背景中或多或少地按照我下面描述的方式工作。

你的 RibbonLoadFunc 就是这样一个回调。它通常用于将 Ribbon 分配给 VBA 模块中的“全局”RibbonUI 对象。使用它,您可以随时触发 InvalidateInvalidateControl方法。

同时在加载Ribbon时触发RibbonLoadFunc,触发其他控件的“get”属性。这些用于动态填充标签和图像等内容。如果您想在某个时候更改这些动态设置,那就是 InvalidateInvalidateControl发挥作用 - 他们强制“获取”回调运行。

您还可以使用这些“get”回调来使用有关控件的信息填充其他全局对象,以便您可以在 Ribbon 环境“外部”使用该信息。

这基本上就是您问题的答案:您不能使用 RibbonLoadFunc 访问和显示有关其他 Ribbon 控件的信息。但是触发 RibbonLoadFunc 的相同“加载”也可以提供有关任何控件的信息,这些控件具有您想要“知道”的相应“获取”回调。

例如,如果您在按钮的 XML 中有 getLabel="SubInVBA"属性,则可以动态地将标签分配给按钮,同时将该信息存储在全局变量中并显示它(任何时候,来自变量)在 MsgBox 中。

关于VBA 从 IRibbonUI 获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com