获取function区控件的名称或标识

我有一个自定义function区控件,在我的Excel中,function区是通过第三方C#添加开发的。如何使用VBA代码触发function区button单击? 网上的很多例子显示了这一点,但我的第一个问题是我甚至不知道function区的名称。 如何获取我感兴趣的function区和function区button的名称?

我发现下面的链接如何获得function区自定义选项卡ID?

进一步阅读达到了我的这个环节

http://www.wordarticles.com/Shorts/RibbonVBA/RibbonVBADemo.php

在下载部分,我下载了具有VBA程序的单词模板,以读取function区,选项卡和button。 它也有一个代码来触发/执行选定的button。 这个VBA函数也可以用于excel。

简短的回答:你不能在Excel中这样做
我build议你试试CustomUIEditor
2.您可以将excel的扩展名更改为.zip,并在存档中查找类似于button的某些XML。 (例如我的文件有“Archivos de Ayuda”button)

在这里输入图像说明

对于您的第一个问题How do I trigger a ribbon button click using VBA code?

我在Workbook.Open事件中使用以下内容,在function区中创build新的选项卡,使用图标创buildbutton并将macros指定给button。 当按下button时,它会从我创build的自定义AddIn中调用一个子对象。

 Sub RibbonChange() Dim hFile As Long Dim path As String, fileName As String, ribbonXML As String hFile = FreeFile fileName = "Excel.officeUI" ribbonXML = "<mso:customUI xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine ribbonXML = ribbonXML + " <mso:ribbon>" & vbNewLine ribbonXML = ribbonXML + " <mso:qat/>" & vbNewLine ribbonXML = ribbonXML + " <mso:tabs>" & vbNewLine ribbonXML = ribbonXML + " <mso:tab id='reportTab' label='YOUR LABLE' insertBeforeQ='mso:TabFormat'>" & vbNewLine ribbonXML = ribbonXML + " <mso:group id='reportGroup' label='YOUR LABLE' autoScale='true'>" & vbNewLine ribbonXML = ribbonXML + " <mso:button id='runReport' label='YOUR LABLE' " & vbNewLine ribbonXML = ribbonXML + "imageMso='AppointmentColor2' onAction='YOUR SUB NAME'/>" & vbNewLine ribbonXML = ribbonXML + " </mso:group>" & vbNewLine ribbonXML = ribbonXML + " </mso:tab>" & vbNewLine ribbonXML = ribbonXML + " </mso:tabs>" & vbNewLine ribbonXML = ribbonXML + " </mso:ribbon>" & vbNewLine ribbonXML = ribbonXML + "</mso:customUI>" ribbonXML = Replace(ribbonXML, """", "") Open path & fileName For Output Access Write As hFile Print #hFile, ribbonXML Close hFile End Sub