如何创建一个带有工具栏的插件

How to create an addin with a toolbar in it

我正在努力寻找解决问题的方法。

我设计了几个用户窗体并在一个工作簿中编写了许多函数,并且我添加了一个带有调用这些函数的按钮的新工具栏。

现在我想要的是将此工作簿保存为加载项,这样当我在另一台 PC 上添加加载项时,工具栏就会出现。

但是工具栏没有出现。我可以将工作簿保存为包含所有功能和用户窗体的加载项,但我无法获得工具栏。

有什么建议吗?

绝不是解决方案,但也许以下内容提供了一个起点:

根据你所说的,我假设你做到了

  • 在另一台电脑上激活您的 *.xlam 加载项
  • 您可以访问它的所有 vba-代码和用户表单
  • 您可以不能访问它的 CustomUI 功能区

检查您的最终 *.xlam 部署时是否仍然有工具栏:

  • 备份准备部署的加载项文件 (*.xlam)。
  • 打开文件,方法是将其文件扩展名更改为 .zip。 (如果您使用 7-zip 之类的文件归档程序,则无需重命名)
  • 文件 \customUI\customUI.xml 的内容大致如下所示。

示例XML:

<customUI
xmlns="http://schemas.microsoft.com/office/2006/01/customui"
xmlns:shared="sharedNamespace"
onLoad="onLoadRibbonDB"
>
 <ribbon>
    <tabs>
        <tab idQ="shared:tabControls" label="AddIn_Beispiele" >

            <group id="grpA" label="Buttons">
                <button id="buttonA" label="Button_large" image="bunny2" onAction="buttonA_Click" size="large"/>
            </group>    

        </tab>
    </tabs>
 </ribbon>
</customUI>

请注意 Excel 即使其中有小错误也不会显示功能区。对于测试,排除任何可能导致错误的内容,然后逐步重新引入功能区控件。如果找到以下最常见的:

  • id 不明显(例如用于其他功能区/加载项)
  • 自定义图标格式不正确
  • 未正确引用自定义图标

题外话:如果您打算在多台 PC 上部署该文件,像下面这样的简单宏可能适合您:

Sub InstallAddIn()

    On Error GoTo skpError

    Dim path as String
    path = "L:\SQL_AddIn\SQL_AddIn_V1.0.xlam"
    name = "SQL_AddIn_V1.0"

    ' Copy the file
    With New FileSystemObject
        .CopyFile _
            path _
            , "C:\Users\" & Environ("USERNAME") & "\AppData\Roaming\Microsoft\AddIns\"
    End With

    ' Add-In Aktivieren
    AddIns(name).Installed = True
    MsgBox ws1.Cells(1, 2).Value & " installiert.", vbInformation
    Exit Sub

skpError:
    MsgBox "Fehler #" & Err & vbNewLine & Error

End Sub