存储在personal.xlsb中的excel选项卡中的xml按钮

时间:2016-08-30 07:49:32

标签: excel excel-vba vba

我正在尝试将按钮添加到我与我的大学分享的Personal.xlsb文件的用户界面。

我正在尝试使用http://www.rondebruin.nl/win/s2/win001.htm(UI编辑器添加自定义xml),但我的hometab上没有显示任何内容,所以我认为可能必须是fileformat是personal.xlsb和xlsm或?但我听说xlsb加载速度比xlsm快,所以我不想改变文件格式。知道如何在Excel中制作自定义菜单吗?

2 个答案:

答案 0 :(得分:1)

你要做的是,

  1. 将您的personal.xlsb保存到personal.xlam(addin file)
  2. 使用UI编辑器将xml添加到personal.xlam文件
  3. 将此已编辑的personal.xlam文件复制到C:\Users\<username>\AppData\Roaming\Microsoft\AddIns\
  4. 现在打开excel。转到开发人员选项卡,然后选择加载项。现在应该在那里列出你的插件文件名。选中该框并单击“确定”。
  5. 重新打开Excel,您应该会在xml中提到的标签中的功能区中看到您的按钮
  6. 现在无论何时打开Excel,该按钮都会显示在功能区中,直到您从Developer-&gt; Add-ins取消选中

    注意:现在,如果你打开personal.xlsb,它会抛出一个错误,因为excel也会从personal.xlam文件加载你的personal.xlsb中的相同过程。所以从之后的personal.xlsb中删除宏程序

答案 1 :(得分:0)

迁移到xlam的问题是我无法在启动时获取本工作簿中的代码:

nRows = size(A,2) * 100;
out = sum(reshape(A.', nRows, []) ~= 0, 1) / nRows;

以及此声明无效:

Private Sub workBook_open()

    Dim ExcelArgs As String
    ExcelArgs = Environ("ExcelArgs")

    Call deleteMacros.deletePersonalFiles
    'MsgBox ExcelArgs
    If UCase(ExcelArgs) = "CREO" Then
        Application.DisplayAlerts = False
        Call Creo.addNewPartToPartslist
        Application.DisplayAlerts = True
    End If

    If InStr(UCase(ExcelArgs), "DOKLIST") >= 0 Then
        Application.DisplayAlerts = False
        Call ProsjektListen.dbDumpDocOut(Split(ExcelArgs, ",")(1))
        Application.DisplayAlerts = True
    End If


    Set myHelper = New Helper
    Call VersionControl.checkLatestVersion

    Call Menu.toolBar

'    temp = Split(Parameters.CmdLineToStr, "\")
'    MsgBox Len(temp(UBound(temp)))
'    If Len(temp(UBound(temp))) > 15 Then
'        'Call Creo.addNewPartToPartslist
'    End If
'
    On Error Resume Next
    Call filter.Unhide_All_Columns
    Sheets("List").Cells(1, 1).Select
End Sub

最简单的可能是保留personal.xlsb并添加addin文件,该文件只有按钮但是调用:Personal!runMyMacro,当它被按下时。