自定义色带永久

我已经写了一堆macros,使办公室中的重复性任务更省时。 我经常编辑它们,添加function和调整。 每次,我都必须到办公室的每个员工,取消隐藏他们的PERSONAL.xlsb文件,删除旧的模块,添加新的和更新的模块。

这些macros由function区上的自定义选项卡控制,具有15个左右button,每个button都触发一个macros。 每隔一段时间,我必须在自定义选项卡上添加/删除/更改button,然后必须单独为办公室中的每个人完成。

我正在研究脚本上的button到function区,但从我读过的东西看来,这似乎不可能。 我结束了一个customui xlsm文件,从我在这个网站上看到的一个教程,但这是不好的,因为自定义选项卡消失,如果xlsm工作簿是隐藏的,或不打开。

基本上,我希望能够到一台电脑,跨PERSONAL.xlsb和CUSTOMRIBBON.xlsm复制到XLSTART文件夹,并准备好马上就绪。

有没有办法? 还是只是不可能…

免责声明:这个答案的信贷去Ron de Bruin。


你并不需要分开文件。 所有你需要的是一个存储function区和代码的文件。 按照下面看看这是如何工作的…


按照Ron de Bruin的教程 ,使用自定义用户界面编辑器为Microsoft Office添加控件到function区。

这很简单

  • 创build一个工作簿并将其保存为加载项CustomRibbon.xlam并将该文件放在C:\Users\yourUserName\AppData\Roaming\Microsoft\AddIns\

  • 下载Microsoft Office的自定义UI编辑器 。 当您打开它时,您要加载CustomRibbon.xlam并右键单击它并selectOffice 2010 Custom UI

在这里输入图像说明

  • 在窗口的右侧粘贴下面的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> 
  • 保存更改并closures程序。

  • 打开Excel,你应该看到你的function区上的新图标

在这里输入图像说明

  • 你可以给你的CustomRibbon.xlam的button分配一个macros,但你必须直接打开CustomRibbon.xlam并打开VBE并插入一个模块。 然后在模块中粘贴以下内容

Sub Macro1(control As IRibbonControl) MsgBox "Hi There" End Sub

  • 再次保存并closures。 请注意,在XML中,您已将OnAction属性的值分配给Macro1 。 显然有更多的button和更多的macros,这就是你为每个button分配触发器的地方。

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

  • 现在打开Excel(不CustomRibbon),当你点击function区上的笑脸button时, Macro1的代码应该执行,显示一个消息框

正如你所看到的,如果你把所有的业务逻辑和function区的XML放在CustomRibbon.xlam并且把它作为一个插件保存在每台机器上,那么当你更新原来的CustomRibbon你只需要在每个客户端上做用新的覆盖CustomRibbon文件。

我希望这是你正在寻找的解决scheme。

对于任何人仍然有这个问题:

如上所述,CustomRibbon.xlam文件应保存/位于C:\Users\yourUserName\AppData\Roaming\Microsoft\AddIns\

我怀疑没有运气的人在CustomUI上根据这个站点丢失了一些必需的XML字段:

读取自定义用户界面代码

在xml代码中,您可以看到自定义UI的每个部分都有一个标题:

  • 命名空间
  • 色带
  • 标签
  • 按键

每个项目都有一个唯一的ID,一个标签,也许还有其他的属性,比如点击button时运行的图标和macros。

例如,以下是Contoso Tools组中的其中一个button的代码。 添加了换行符,使代码更易于阅读。

Excelfunction区自定义button代码

  • ID – customButton1 – 是唯一的。 每个ID只能在代码中使用一次。
  • 标签 – ConBold – 将显示在function区选项卡上的button上的文本。
  • 图像 – 粗体 – 也会出现在button上
  • 大小设置为大,所以在Ribbon上很容易看到。
  • onAction – conBoldSub – 是单击button时将运行的macros的名称。

这是造成的问题,因为代码的一些必填字段(customUI,function区,标签..)被切断了上面的发布的答案,整个完整的代码工作是:

 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon startFromScratch="false"> <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> 

一旦所有需要的XML字段都存在,它应该按预期工作。 在这一点上按照原来的答案说明,它应该工作顺利。