【问题标题】:Customizing a ribbon with VBA in Excel在 Excel 中使用 VBA 自定义功能区
【发布时间】:2013-09-02 13:00:53
【问题描述】:

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

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

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

一些更详细的情况描述:

用户将下载一个文件,其中包含材料、设备、劳动力的列表。每列包含有关数量、价格等的信息 当用户单击我要创建的此按钮(我已手动创建)时,另一个工作簿中名为“Main”的宏将启动并将整个工作表(内容)复制到自身并执行一些程序在其上执行的操作。

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

这样,一个新版本只需打开一次,然后继续使用,用户只需打开下载的文件,点击相应的按钮,WorkBook B就会自动打开并执行。

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

【问题讨论】:

  • “宏的路径”是什么意思?
  • 当我分配它们时,功能区中的图标/按钮指向位置/路径的 excel 文件中的宏,但是当用户从另一个目录打开相同的文件时(即下载) 并尝试使用按钮运行宏,它仍然指向之前的文件,因此是宏的路径。我想有更好的方法来解释这一点:)
  • 那么将它们分组到加载项中不是更简单吗?
  • 嗨,retailcoder,是否会(或可以)将加载项嵌入到特定的 excel 文件中? (这是一个 xlsm)

标签: vba excel ribbon


【解决方案1】:

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

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

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

【讨论】:

  • ... 或者使用 "'" & thisworkbook.name & "'!MacroName" 也许? (这是双引号内的单引号......然后是感叹号前的单引号)
  • 虽然这在 Excel 2007+ 中工作,但 CommandBars 本身并不能真正自定义 Ribbon。要真正自定义功能区,需要使用 CustomUI XML 编辑器修改工作簿的 XML。
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 2012-08-15
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
相关资源
最近更新 更多