excel - 永久自定义功能区

标签 excel vba

我编写了一堆宏,以减少办公室中重复性任务的耗时。 我不断地编辑它们,添加功能并进行调整。 每次,我都必须走遍办公室的每个员工,取消隐藏他们的 PERSONAL.xlsb 文件,删除旧模块,添加新的和更新的模块。

这些宏是通过功能区上的自定义选项卡进行控制的,其中包含 15 个左右的按钮,每个按钮都会触发一个宏。 我时不时地必须在自定义选项卡上添加/删除/更改按钮,然后必须为办公室中的每个人单独完成这些操作。

我正在考虑将按钮编写到功能区上,但从我所读到的内容看来这是不可能的。 我最终根据我在本网站上看到的教程制作了一个 customui xlsm 文件,但这不好,因为如果 xlsm 工作簿被隐藏或未打开,自定义选项卡就会消失。

基本上,我希望能够转到计算机上,将 PERSONAL.xlsb 和 CUSTOMRIBBON.xlsm 复制到 XLSTART 文件夹中,然后立即准备好。

有办法吗?还是根本不可能……

最佳答案

免责声明:此答案归功于 Ron de Bruin。


您实际上不需要分隔文件。您所需要的只是一个存储功能区和代码的文件。请按照以下步骤查看其工作原理...


关注Ron de Bruin's tutorial使用Custom UI Editors for Microsoft Office向功能区添加控件.

就这么简单

  • 创建工作簿并将其另存为加载项 CustomRibbon.xlam 并将该文件放入 C:\Users\yourUserName\AppData\Roaming\Microsoft\AddIns\

  • 下载Custom UI Editors for Microsoft Office 。当您打开它时,您想要加载 CustomRibbon.xlam 并右键单击它并选择 Office 2010 Custom UI

enter image description here

  • 在窗口的右侧粘贴以下 XML

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon>
        <tabs>
          <tab idMso="TabHome" >
            <group id="customGroup1" label="My Group" insertAfterMso="GroupEditingExcel">
              <button id="customButton1" label="Click Me" size="large" onAction="Macro1" imageMso="HappyFace" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
    
  • 保存更改并关闭程序。

  • 打开 Excel,您应该会在功能区上看到新图标

enter image description here

  • 您可以将宏分配给 CustomRibbon.xlam 中的按钮,但您必须直接打开 CustomRibbon.xlam 并打开 VBE 并插入模块。然后在模块中粘贴以下内容

子宏 1(控制为 IRibbonControl) 消息框“你好” 结束子

  • 再次保存并关闭。请注意,在 XML 中,您已将 OnAction 属性的值分配给 Macro1。显然,有了更多的按钮和更多的宏,您可以在其中为每个按钮分配触发器。

  • 打开“开发人员”选项卡,单击“加载项”并确保您的 CustomRibbon 已打开

  • 现在打开 Excel(不是 CustomRibbon ),当您单击功能区上的笑脸按钮时,Macro1 中的代码应该执行,显示一个消息框

正如您所看到的,如果您将所有业务逻辑和功能区的 XML 放入 CustomRibbon.xlam 中,并将其保存为每台计算机上的加载项,那么当您更新原始 CustomRibbon 您在每个客户端上所需要做的就是用新文件覆盖 CustomRibbon 文件。

我希望这是您正在寻找的解决方案。

关于excel - 永久自定义功能区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052944/

相关文章:

excel - .Offset(1, 0).EntireRow.Delete 出错

Excel VBA代码将工作表向右或向左移动一个

arrays - 获取 0 和 1 组合的二维数组

excel - 如何使用 open xml C# 禁用 Excel 中的网格线?

vba - objProcess.Terminate 未找到

excel - 如何在 Shell 中运行 SSH 以将值返回到 VBA 变量中?

arrays - 数组中的 VBA SumIf

excel - 从自定义应用程序获取数据到 EXcel

excel - 如何使用 `UsedRange` 动态获取两个不连续过滤条件的范围(第一行除外)?

sql - 根据 Excel 用户表单下拉组合框中选定的月份创建 SQL 查询