Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA | VSTO |命令栏上下文菜单仅适用于图片/对象_Excel_Vb.net_Vba - Fatal编程技术网

Excel VBA | VSTO |命令栏上下文菜单仅适用于图片/对象

Excel VBA | VSTO |命令栏上下文菜单仅适用于图片/对象,excel,vb.net,vba,Excel,Vb.net,Vba,我需要向我的应用程序添加上下文菜单项(CommandBar)的帮助: 限制实际控件仅为图片和形状填充的内容: Public WithEvents ContextMenuItem_SaveAsPicture As Office.CommandBarButton Dim ContextMenu As Office.CommandBar = Application.CommandBars("Pictures&Objects") 枚举我的应用程序中的所有命令栏会产生: Worksheet Me

我需要向我的应用程序添加上下文菜单项(
CommandBar
)的帮助:

限制实际控件仅为图片和形状填充的内容:

Public WithEvents ContextMenuItem_SaveAsPicture As Office.CommandBarButton
Dim ContextMenu As Office.CommandBar = Application.CommandBars("Pictures&Objects")
枚举我的应用程序中的所有命令栏会产生:

Worksheet Menu Bar
Chart Menu Bar
WordArt
Picture
Drawing Canvas
Organization Chart
Diagram
Ink Drawing and Writing
Ink Annotations
Circular Reference
Standard
Formatting
PivotTable
Chart
Reviewing
Forms
Stop Recording
External Data
Formula Auditing
Full Screen
PivotChart Menu
Visual Basic
Web
Control Toolbox
Exit Design Mode
Refresh
Watch Window
PivotTable Field List
Workbook Queries
Data Catalog Search
Shared Queries
Borders
Protection
Text To Speech
List
Compare Side by Side
Workbook tabs
Cell
Column
Row
Cell
Column
Row
Ply
XLM Cell
Document
Desktop
Nondefault Drag and Drop
AutoFill
Button
Dialog
Series
Plot Area
Floor and Walls
Trendline
Chart
Format Data Series
Format Axis
Format Legend Entry
Formula Bar
PivotTable Context Menu
Query
Query Layout
AutoCalculate
Object/Plot
Title Bar (Charting)
Layout
Pivot Chart Popup
Phonetic Information
Auto Sum
Paste Special Dropdown
Find Format
Replace Format
List Range Popup
List Range Layout Popup
XML Range Popup
List Range Layout Popup
Nil
Filter Names
Excel Previewer
&Legacy Keyboard Support
Row
Column
Drawing
Shadow Settings
3-D Settings
Borders
Borders
Draw Border
Chart Type
Pattern
Font Color
Fill Color
Line Color
Drawing and Writing Pens
Annotation Pens
Drawing and Writing Pens
Annotation Pens
Order
Nudge
Align or Distribute
Rotate or Flip
Lines
Connectors
AutoShapes
Callouts
Flowchart
Block Arrows
Stars & Banners
Basic Shapes
Insert Shape
Shapes
Inactive Chart
Excel Control
Curve
Curve Node
Curve Segment
Pictures Context Menu
OLE Object
ActiveX Control
WordArt Context Menu
Rotate Mode
Connector
Script Anchor Popup
Canvas Popup
Organization Chart Popup
Diagram
Layout
Select
FaceID Browser
Custom 1
History
Task Pane

Property Editor
Office Clipboard
XML Source
Research
XML Document
Signatures
Document Actions
Clip Art
Selection
Format Object
Document Management
Document Updates
Mail Merge Panes
Fax Service
Meeting Workspace
Attachment Options
Accessibility Checker
Editor
Dictionaries
Thesaurus
Share
Smart Lookup
Activity
Researcher
Tap
Help
Online Content
Alt Text
Changes
Ribbon Adapter
Add Command
Built-in Menus
Clipboard
Envelope

Team
Status Bar
Ribbon
到目前为止,像“形状”或“图片上下文菜单”或“图片”甚至“基本形状”这样的吸引眼球的东西都不会产生任何结果,甚至不会产生错误

下面是我如何添加它(如果有帮助):

 ContextMenuItem_SaveAsPicture = ContextMenu.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Before:=1, Temporary:=False)
唯一对我有用的是奇妙的
'Cell'
列表范围弹出窗口
,用于表格、命令栏


我想我会通过耗时1来完成很好的ole尝试和错误1,但没有看到这一点,所以我想我会问一下,以防你们中的一个聪明人在我开始尝试之前得到答案#100

虽然这可以在运行时完成,但我发现使用XML更容易,因为这正是微软真正希望你做的,而且我已经设置了一个功能区,这并没有什么坏处

我发现这些CommandBar id/名称中没有一个是最新的,而且大多数都是过时的,因为我假设它们中的大多数只是FluentUI之前Excel版本的占位符

如果您在此处使用XML,则这是一个不完整的示例,用于仅为图片/形状填充项目,但可以使用以下提到的标识符进行更改以满足您的需要:

<!-- language: lang-xml -->
....
<contextMenus>

  <!--Handles Pictures-->
  <contextMenu idMso="ContextMenuPicture">
    <button id="ContextMenu_SaveAsPicture2" label="Save As Picture" imageMso="WebControlSubmitWithImage" onAction="onAction"/>
  </contextMenu>

  <!--Handles Shapes : Basic, Block, Flowcharts and otherwise-->
  <contextMenu idMso="ContextMenuShape">
    <button id="ContextMenu_SaveAsPicture" label="Save As Picture" imageMso="WebControlSubmitWithImage" onAction="onAction"/>
  </contextMenu>

  <!--Handles when you group shapes, applies to pictures as well, or a mix of both-->
  <contextMenu idMso="ContextMenuObjectsGroup">
    <button id="ContextMenu_SaveAsPicture3" label="Save As Picture" imageMso="WebControlSubmitWithImage" onAction="onAction"/>
  </contextMenu>

  <!--Handles Line Shapes and line segments-->
  <contextMenu idMso="ContextMenuShapeConnector">
    <button id="ContextMenu_SaveAsPicture4" label="Save As Picture" imageMso="WebControlSubmitWithImage" onAction="onAction"/>
  </contextMenu>

  <!--Handles Freefrom drawn shapes -->
  <contextMenu idMso="ContextMenuShapeFreeform">
    <button id="ContextMenu_SaveAsPicture5" label="Save As Picture" imageMso="WebControlSubmitWithImage" onAction="onAction"/>
  </contextMenu>
</contextMenus>
....

....
....
此外,在对MSDN进行了认真的挖掘之后,我偶然发现了一个伟大的、非常彻底的、适用于所有情况的标记标识符PDF,不仅限于这个问题。当尝试在某些
idMso
之前或之后插入,但不知道它的名称时,这非常有用。我真的很想使用ContextualTabs,但之前很难找到标识符。本以为这会帮助其他人搜索功能区标识符,但对我个人来说,这是一个很好的发现

以下是Microsofts下载门户的直接链接:

它以.txt格式下载,但为了便于阅读,我将我的文件导出到Excel中。无论如何,快速CTRL+F将帮助您导航到任何标识符/类别。它甚至列出了每个标识符支持的Excel版本


如果发生链接损坏,则发现它导航到: >然后转到最近日期>单击CT_上下文菜单的超链接,而不是CT_上下文菜单>,并在idMso说明中单击他们提供的任何部分超链接引用>然后单击Excel命令表链接