我需要使用VBA从Excel 2010中的右键单击菜单中删除“粘贴选项”。
我能够删除所有不需要的“正常”控制项(例如“Cu& t”,“& Copy”,“Paste& Special ...”等),但我不能摆脱'粘贴选项'及其图标儿童。我还从Excel文件中删除了“粘贴选项” - >选项 - >高级 - >切割复制和粘贴,但这对右键单击“粘贴选项”没有影响。我已经广泛搜索了一个解决方案,但在网上的任何地方都找不到这个参考。
我还检查了VBA'Locals'窗口中的CommandBar对象并查看了所有属性,但看不到'粘贴选项'的位置。
提前谢谢
答案 0 :(得分:2)
使用customui编辑器,您可以将其添加到customui14部分
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<commands>
<command idMso="Paste" enabled="false"/>
<command idMso="PasteGallery" enabled="false"/>
<command idMso="PasteGalleryMini" enabled="false"/>
<command idMso="PasteMenu" enabled="false"/>
<command idMso="PasteLink" enabled="false"/>
<command idMso="PasteAsHyperlink" enabled="false"/>
<command idMso="PasteSpecialDialog" enabled="false"/>
<command idMso="PasteFormatting" enabled="false"/>
<command idMso="PasteFormulas" enabled="false"/>
<command idMso="PasteValues" enabled="false"/>
<command idMso="PasteFormulasAndNumberFormatting" enabled="false"/>
<command idMso="PasteTranspose" enabled="false"/>
<command idMso="PastePictureLink" enabled="false"/>
</commands>
</customUI>
如果要隐藏控件,则必须为要操作的每个菜单执行此操作。例如,对于“单元格”菜单
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<contextMenus>
<contextMenu idMso="ContextMenuCell">
<gallery idMso="PasteGalleryMini" visible="false"/>
</contextMenu>
</contextMenus>
</customUI>
答案 1 :(得分:0)
使用for循环,这是上下文菜单CommabdBarControl elements的ID和标题:
ID Caption 21 Cu&t 19 &Copy 22 &Paste 21437 Paste &Special... 3624 &Paste Table 25536 Smart &Lookup 32713 Data T&ype 33409 Translate 295 Insert C&ells... 27690 Insert C&ells... 292 &Delete... 3125 Clear Co&ntents 24508 &Quick Analysis 31623 Sp&arklines 31402 Filt&er 31435 S&ort 2031 Insert Co&mment 1592 Delete Co&mment 1593 Sh&ow/Hide Comments 855 &Format Cells... 1966 Pic&k From Drop-down List... 1614 &Show Phonetic Field 13380 Define N&ame... 1576 &Hyperlink... 1577 Edit &Hyperlink... 1015 &Open Hyperlink 3626 &Remove Hyperlink 11299 E&xpand to detail 31595 Additional Act&ions 178 F&ull Screen 22577 &Additional Actions
因此,如果您摆脱了“粘贴”和“特殊粘贴”,那么所有粘贴选项都将消失。不确定“粘贴表”是指什么。
For Each menuItem In Application.CommandBars("Cell").Controls If menuItem.ID = 22 or menuItem.ID = 21437 Then menuItem.Delete Next