与其他用户共享自定义文件(exportedUI)

时间:2019-03-07 18:48:23

标签: excel vba

我在Excel中创建了一个自定义功能区,该功能区在我的PERSONAL.XLSB中调用了几个宏,然后将自定义文件(exportedUI)导出到共享文件服务器上的某个位置。所有宏都保存为.bas文件,每个用户在尝试使用功能区之前都将其导入到其Personal.XLSB中。

一切在我的计算机上都可以正常运行,功能区可以访问并且所有按钮都可以正常工作。但是,当另一个用户单击任何按钮以使用其计算机上的自定义文件时,它将引发错误。

我打开了exportUI文件,并注意到每个动作都调用PERSONAL.XLSB,该文件保存在本地计算机上为: C:\ Users \ my.name \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART \ PERSONAL.XLSB ...

这当然在其他用户将其另存为时不起作用: C:\ Users \ their.name \ AppData \ etc ...

我现在要解决的唯一想法是为每个用户创建一个不同的exportUI文件,但这可能非常麻烦且混乱,尤其是当我想对以下代码中的任何代码进行修改时未来。我真的想要一个可以与每个用户共享的文件。

是否有一种更清洁的方式与他们计算机上的其他用户共享自定义功能区?每个用户可以使用一个文件?

还是我坚持尝试操纵文件以使其与每个用户的唯一版本一致(可能通过使用python脚本的文本编辑器)??

1 个答案:

答案 0 :(得分:1)

我认为您应该通过Excel加载项文件(.xlam)分发代码。

您可以将功能区附加到外接程序本身,这是不可见的,很像 Personal.xlsb

请参见罗恩·布鲁因(Ron de Bruin)的Change the Ribbon in Excel 2007-2016

只需将代码复制到新文件,将其重命名为Excel加载项(警告,每次从下拉菜单中选择加载项时,都会更改路径),然后使用“自定义” UI编辑器可创建功能区菜单(不需要完整的文件路径)。

最终用户可以在想要使用您的菜单/代码时直接打开加载项文件,也可以将其添加到以Excel开头的已安装加载项中。


编辑...

这是我的一个插件中的示例UI XML。将<ribbon startFromScratch="false">与命名空间(nsCompany)结合使用可使我拥有多个加载文件,将更多按钮/菜单添加到同一功能区。

<?xml version="1.0" encoding="utf-8" ?>
<!-- Ribbon for 2007+ -->
<customUI onLoad="Engineering Tools.xlam!EngRibbon.RibbonOnLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:nsCompany="Company Tools">
  <ribbon startFromScratch="false">
    <tabs>
      <tab idQ="nsCompany:CompanyTab" label="Company" keytip="C">
        <group id="ENGGroup1" label="PBS">
          <button id="ENGButton11" label="Project Analysis" imageMso="ImportExcel" size="large" onAction="Engineering Tools.xlam!EngRibbon.USER_ImportMLBOM" getEnabled="Engineering Tools.xlam!EngRibbon.GetEnabled" tag="EngTool" keytip="I" />
          <button id="ENGButton12" label="Login" imageMso="ServerConnection" size="large" onAction="Engineering Tools.xlam!EngRibbon.USER_Login" getEnabled="Engineering Tools.xlam!EngRibbon.GetEnabled" tag="EngTool" keytip="L" />
      </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>