获取功能区控件的名称或ID

时间:2016-06-22 17:13:07

标签: excel excel-vba vba

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

3 个答案:

答案 0 :(得分:5)

我发现以下链接 How to get Ribbon custom Tabs IDs?

进一步阅读了我到这个链接

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

在下载部分,我下载了具有VBA程序的单词模板,以读取功能区,选项卡和按钮。它还有一个触发/执行所选按钮的代码。此VBA功能也可用于excel。

答案 1 :(得分:1)

简答: 您无法在Excel中执行此操作
1.我建议你试试CustomUIEditor
2.您可以将excel的扩展名更改为.zip,并在存档中查找类似于按钮的XML。 (例如我的文件有“Archivos de Ayuda”按钮)

enter image description here

答案 2 :(得分:1)

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

我在Workbook.Open事件中使用以下内容,该事件在功能区中创建新选项卡,创建带有图标的按钮并将宏指定给按钮。按下按钮时,它会从我创建的自定义AddIn中调用sub。

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