【问题标题】:Installing a VBA macro in Excel 2007在 Excel 2007 中安装 VBA 宏
【发布时间】:2010-11-13 09:47:49
【问题描述】:

我在 Excel 2003 电子表格中有一个 VBA 宏,我想在运行 Excel 的机器上“安装”它。

我在本地机器上创建了一个“受信任的位置”,我知道如何将模块复制到现有工作簿并分配一个组合键来调用它,但我不知道如何让宏在有人启动 Excel。帮忙?

【问题讨论】:

    标签: excel excel-2007 vba


    【解决方案1】:

    最简单的解决方案是(对于 xl2003 和 xl2007)将包含宏的 xls 从客户端计算机复制到路径 = Application.StartupPath(可以构建一个简单的 vbscript 安装程序来实例化 excel 并检索此信息)。

    这样,您的宏将在任何打开的工作簿中可用,因为位于启动路径中的 xls 文件是在 excel 启动时加载的。

    【讨论】:

      【解决方案2】:

      我记得以前的方法是将宏保存在 Personal.xls 中 工作簿 - 那么它就可以访问了 任何时候您打开 Excel - 这在 2007 年是否发生了变化?

      那是一种的方式。更好的方法是(并且是)创建一个插件,然后您可以通过工具->插件启用和禁用它。 (即使您关闭并重新启动 Excel,加载项仍将保持启用状态)。您可以将任何 .XLS 文件另存为加载项 (.XLA)。

      在您的外接程序中,您可以只使用Auto_Open 方法:

      Private Sub Auto_Open()
      
          DoStuff
      
      End Sub
      

      ...或者,您可以按照 Ryan 的建议连接 Workbook_Open 事件。

      当然,由于用户可以禁用加载项,您还希望在Auto_Close(或Workbook_BeforeClose 事件)中执行相反的操作。

      实际上,如果您使用事件,最好使用Workbook_AddinInstallWorkbook_AddinUninstall 事件。使用这些更“正确”,并且如果您关闭 Excel 然后在提示保存时单击“取消”,也不会触发“关闭”事件。

      【讨论】:

      • +1 以获得更清洁(尽管要求更高)的解决方案。这听起来像是“正确的方式”。
      【解决方案3】:

      我不确定你所说的“出现”是什么意思,但你可以通过调用它来自动执行它

      Private Sub Workbook_Open()
      
      End Sub
      

      ThisWorkbook 对象模块中。这就是你要找的吗?

      【讨论】:

        【解决方案4】:

        我记得以前的方法是将您的宏保存在您的 Personal.xls 工作簿中 - 然后您可以在任何时候打开 Excel 访问它 - 这在 2007 年是否发生了变化?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-27
          • 2010-11-10
          • 2012-07-03
          • 2011-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多