通过宏模拟单击自定义功能区项目
Simulate, through a macro, a click on a custom ribbon item
我看过类似的问题,但没有找到我的具体问题的答案。
我有一个带有自定义按钮的自定义功能区选项卡。他们的目的是在文档中各插入一个QuickPart。
因为我要插入很多不同的 QuickPart,所以我不想为每个都创建一个宏。
因此,当用户 select 功能区中的项目时,将调用单个宏,它使用 control.ID
属性 插入适当的 QuickPart。
一切正常,但现在我被要求为其中一些功能区项目添加键盘快捷键。
这是我到目前为止所拥有的:
插入QuickParts的宏:
Sub TalkToRibbon(control As IRibbonControl)
...
End Sub
按下快捷方式时,触发此宏:
Sub interac_obj_cart()
shortcut = "interac_obj_cart"
TalkToRibbon(shortcut)
End Sub
无论我将“快捷方式”定义为 String
还是 IRibbonControl
,我都会收到错误消息(尽管有所不同)。我觉得我缺少了什么。预先感谢您的帮助
使用功能区控件的按键提示而不是发明新东西。 KeyTips
是当您按下 ALT 键时出现在功能区上的键盘快捷键。您可以使用 keytip
和 getKeytip
属性分配您自己的 KeyTips
。 getKeyTip
回调具有以下签名:
C#: string GetKeytip(IRibbonControl control)
VBA: Sub GetKeytip (control As IRibbonControl, ByRef label)
C++: HRESULT GetKeytip ([in] IRibbonControl *pControl, [out, retval] BSTR *pbstrKeytip)
Visual Basic: Function GetKeytip (control As IRibbonControl) As String
当用户按下 ALT 键加一到三个字母时显示 KeyTip
。
否则,您需要通过将处理程序提取到一个单独的函数中来重构您的代码,该函数接受控件 ID 并且可以由传递控件 ID 的其他人调用。例如:
Sub TalkToRibbon(control As IRibbonControl)
Call EventHandlerWhichAcceptsID control.ID
End Sub
然后您的键盘快捷键处理程序也可以调用它。
为什么不直接将键盘快捷键附加到构建块或宏本身?
我假设您所说的快速零件指的是构建基块,也许在快速零件库中。您可以直接为它们分配键盘快捷键,并将它们存储在包含构建块的同一模板中。您还可以为宏指定键盘快捷键。
构建基块、宏和快捷方式不应存储在构建 Blocks.dotx 模板中,而应存储在文档或全局模板中。
如果您需要更多关于这些概念的信息,这里有我的文章链接:
这确实与它们在您的自定义功能区上的位置无关。
您还可以在功能区上放置自定义构建块库菜单。
这里是Greg Maxey's page on building blocks gallery controls。这些也可以放在QAT上。
我看过类似的问题,但没有找到我的具体问题的答案。
我有一个带有自定义按钮的自定义功能区选项卡。他们的目的是在文档中各插入一个QuickPart。
因为我要插入很多不同的 QuickPart,所以我不想为每个都创建一个宏。
因此,当用户 select 功能区中的项目时,将调用单个宏,它使用 control.ID
属性 插入适当的 QuickPart。
一切正常,但现在我被要求为其中一些功能区项目添加键盘快捷键。
这是我到目前为止所拥有的:
插入QuickParts的宏:
Sub TalkToRibbon(control As IRibbonControl) ... End Sub
按下快捷方式时,触发此宏:
Sub interac_obj_cart() shortcut = "interac_obj_cart" TalkToRibbon(shortcut) End Sub
无论我将“快捷方式”定义为 String
还是 IRibbonControl
,我都会收到错误消息(尽管有所不同)。我觉得我缺少了什么。预先感谢您的帮助
使用功能区控件的按键提示而不是发明新东西。 KeyTips
是当您按下 ALT 键时出现在功能区上的键盘快捷键。您可以使用 keytip
和 getKeytip
属性分配您自己的 KeyTips
。 getKeyTip
回调具有以下签名:
C#: string GetKeytip(IRibbonControl control)
VBA: Sub GetKeytip (control As IRibbonControl, ByRef label)
C++: HRESULT GetKeytip ([in] IRibbonControl *pControl, [out, retval] BSTR *pbstrKeytip)
Visual Basic: Function GetKeytip (control As IRibbonControl) As String
当用户按下 ALT 键加一到三个字母时显示 KeyTip
。
否则,您需要通过将处理程序提取到一个单独的函数中来重构您的代码,该函数接受控件 ID 并且可以由传递控件 ID 的其他人调用。例如:
Sub TalkToRibbon(control As IRibbonControl)
Call EventHandlerWhichAcceptsID control.ID
End Sub
然后您的键盘快捷键处理程序也可以调用它。
为什么不直接将键盘快捷键附加到构建块或宏本身?
我假设您所说的快速零件指的是构建基块,也许在快速零件库中。您可以直接为它们分配键盘快捷键,并将它们存储在包含构建块的同一模板中。您还可以为宏指定键盘快捷键。
构建基块、宏和快捷方式不应存储在构建 Blocks.dotx 模板中,而应存储在文档或全局模板中。
如果您需要更多关于这些概念的信息,这里有我的文章链接:
这确实与它们在您的自定义功能区上的位置无关。
您还可以在功能区上放置自定义构建块库菜单。
这里是Greg Maxey's page on building blocks gallery controls。这些也可以放在QAT上。