提问人:D.P. OL' RACE 提问时间:7/22/2021 最后编辑:D.P. OL' RACE 更新时间:7/26/2021 访问量:628
为什么当我在 Word 中插入的表格内单击时,我的自定义右键单击菜单代码不起作用?VBA的
Why is my customized Right Click Menu code won't work when I click inside an inserted table in Word? VBA
问:
我有一个 Word VBA 模板,可以容纳旧版本和新版本。发布在下面容纳旧风格。新的是一个加载项,也可以正常工作。问题很简单,自定义菜单在插入的表格外部单击鼠标右键时起作用,但在其中单击鼠标右键时不起作用。PS:我实际上并不认为发布此代码真的是必要的,因为自定义菜单似乎在表格中不起作用。
Public Sub BuildCustomMenus2()
On Error Resume Next
With Application.CommandBars("Menu Bar")
.Controls("rate1").Delete
End With
Dim aVal As Single
aVal = ToDoubleFromString(Application.Version)
If aVal < 12 Or Trim$(GetSetting("rate1", "Narrative Software", "NoWordRibbon")) = "Yes" Then
If ThisDocument.Application.Windows.count > 0 Then SetN1Defaults
Dim vCtrlCount As Integer
Dim ctrlControl As CommandBarControl
'delete any previously created custom toolbars and rebuild
On Error Resume Next
With Application.CommandBars("Menu Bar")
.Controls("rate1").Delete
End With
vCtrlCount = CommandBars("Menu Bar").Controls.count
vCtrlCount = vCtrlCount + 1
With CommandBars("Menu Bar").Controls
.Add(Type:=msoControlPopup, BEFORE:=vCtrlCount).Caption = "&rate1"
End With
'add more macros to options here...and create
'sub...add to select case statement
'1. Add the buttons
'2. title caption
'3. Display only the caption text
'4. call procedure to pass button call
Set ctrlControl = CommandBars("Menu Bar").Controls("rate1").Controls.Add(msoControlButton)
ctrlControl.Caption = "Navigate"
ctrlControl.Style = msoButtonIconAndCaption
ctrlControl.OnAction = "RunDocMap"
ctrlControl.FaceId = 1714
Set ctrlControl = CommandBars("Menu Bar").Controls("rate1").Controls.Add(msoControlButton)
ctrlControl.Caption = "Mark Active Edit"
ctrlControl.Style = msoButtonIconAndCaption
ctrlControl.OnAction = "MarkActiveEdit"
ctrlControl.FaceId = 279
Set ctrlControl = CommandBars("Menu Bar").Controls("rate1").Controls.Add(msoControlButton)
ctrlControl.Caption = "Go to Active Edit"
ctrlControl.Style = msoButtonIconAndCaption
ctrlControl.OnAction = "GoToActiveEdit"
ctrlControl.FaceId = 39
结束副
答:
0赞
Eugene Astafiev
7/26/2021
#1
在 Microsoft Office 2010 之前,在 Microsoft Office Fluent 功能区用户界面 (UI) 中自定义上下文(右键单击)菜单的唯一方法是使用 CommandBars 解决方案。在 Office 2010 中,您可以自定义内置上下文菜单,就像自定义功能区 UI 的其他组件一样。此基于 XML 的上下文菜单扩展性模型基于熟悉的功能区扩展性模型。这意味着,您可以使用当前用于自定义功能区 UI 的相同 XML 标记和回调。
MS Office 2010 中已弃用命令栏。使用 Fluent UI(又名功能区 UI)在 Office 2010 及更高版本中自定义上下文菜单。有关详细信息,请参阅在 Office 2010 中自定义上下文菜单。例如:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<contextMenus>
<contextMenu idMso="ContextMenuText">
<button idMso="FontDialog" visible="false" />
<toggleButton id="MyToggle" label="My Toggle Button" />
<button id="MyButton" label="My Button" insertBeforeMso="HyperlinkInsert" onAction="GetButtonID" />
<menuSeparator id="MySeparator" />
<menu id="MySubMenu" label="My Submenu" >
<button id="MyButton2" label="Button on submenu" />
</menu>
<gallery id="galleryOne" label="My Gallery">
<item id="item1" imageMso="HappyFace" />
<item id="item2" imageMso="HappyFace" />
<item id="item3" imageMso="HappyFace" />
<item id="item4" imageMso="HappyFace" />
</gallery>
<dynamicMenu id="MyDynamicMenu" label= "My Dynamic Menu" getContent="GetMyContent" />
</contextMenu>
</contextMenus>
</customUI>
如果表是嵌入的 OLE 对象(Excel 工作表),则在这种情况下,您需要在 Excel 中自定义上下文菜单。
评论
0赞
D.P. OL' RACE
7/26/2021
谢谢!不幸的是,我刚刚发现我们的加载项包含一个编译文件,其中的 XML 是。因此,这使我们可以选择模仿我们拥有的所有功能或尝试反编译它并进行必要的更改。谢谢。至少我们知道我们将从哪里开始。
评论
On Error Resume Next
End Sub