自定义色带永久
我已经写了一堆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字段都存在,它应该按预期工作。 在这一点上按照原来的答案说明,它应该工作顺利。