在Excel中使用VBA自定义功能区

one*_*ijk 4 excel vba ribbon excel-vba

我已经了解到,创建一个自定义选项卡在Excel中不可能在!发布(与MSProject不同)

具体来说,我可以将宏的路径更改为当前位置吗?

编辑似乎这个页面可能会导致答案,但我仍然不知道如何

更详细的情况描述:

用户将下载一个文件,其中包含材料,设备,人工清单.每列包含有关数量,定价等的信息当用户点击我要创建的此按钮(我手动创建)时,另一个工作簿中的一个名为"Main"的宏启动并将整个工作表(内容)复制到自身并执行程序所做的一些事情就在上面.

所以我面临的问题是,我正在向客户发送一个新版本,他必须把它放在确切的位置,否则它将无法工作.由于涉及Mac和Windows计算机的混合,我宁愿看到当用户打开WorkBook B(包含代码的那个)时按钮被分配给过程的情况.

这样,新版本只需打开一次,然后连续使用,用户只需打开下载的文件,单击相应的按钮,WorkBook B将自行打开并执行.

也许还有其他方法可以解决这个问题.我没有检查是否更容易为快速访问工具栏分配按钮...

Sim*_*mon 7

这是我用来添加自定义工具栏的一些代码:

Set cbToolbar = Application.CommandBars.Add(csToolbarName, msoBarTop, False, True)

With cbToolbar
    Set ctButton1 = .Controls.Add(Type:=msoControlButton, ID:=2950)
    Set ctButton2 = .Controls.Add(Type:=msoControlButton, ID:=2950)
    Set ctButton3 = .Controls.Add(Type:=msoControlButton, ID:=2950)
End With

With ctButton1
    .Style = msoButtonIconAndCaption
    .Caption = "Set &Picklists"
    .FaceId = 176
    .OnAction = "SetPicklist"
End With

With ctButton2
    .Style = msoButtonIconAndCaption
    .Caption = "Set &Defaults"
    .FaceId = 279
    .OnAction = "SetDefaults"
End With

With ctButton3
    .Style = msoButtonIconAndCaption
    .Caption = "&Visibility Settings"
    .FaceId = 2174
    .OnAction = "VisibilitySettings"
End With


With cbToolbar
    .Visible = True
    .Protection = msoBarNoChangeVisible
End With
Run Code Online (Sandbox Code Playgroud)

'OnAction'控制运行的宏...如果要扩展它以在特定工作簿上运行宏,请使用"whatever.xls!MacroName"

  • 虽然这**在Excel 2007+中有效,但`CommandBars`本身并没有真正定制`Ribbon`.要真正自定义功能区,必须使用CustomUI XML编辑器修改工作簿的XML. (3认同)