我在 Excel 2003 电子表格中有一个 VBA 宏,我想将它“安装”在运行 Excel 的机器上。
我在本地机器上创建了一个“受信任的位置”,我知道如何将模块复制到现有工作簿并分配一个组合键来调用它,但我不知道如何让宏在有人启动 Excel 时自动出现. 帮助?
我在 Excel 2003 电子表格中有一个 VBA 宏,我想将它“安装”在运行 Excel 的机器上。
我在本地机器上创建了一个“受信任的位置”,我知道如何将模块复制到现有工作簿并分配一个组合键来调用它,但我不知道如何让宏在有人启动 Excel 时自动出现. 帮助?
我记得以前的方法是将宏保存在 Personal.xls 工作簿中——然后在你打开 Excel 的任何时候都可以访问它——这在 2007 年发生了变化吗?
那是一种方式。更好的方法是(并且是)创建一个插件,然后您可以通过工具->插件启用和禁用它。(即使您关闭并重新启动 Excel,加载项仍将保持启用状态)。您可以将任何 .XLS 文件另存为加载项 (.XLA)。
在您的加载项中,您可以只使用一种Auto_Open
方法:
Private Sub Auto_Open()
DoStuff
End Sub
...或者,您可以Workbook_Open
按照 Ryan 的建议将活动联系起来。
当然,由于用户可以禁用 Add-in,因此您还希望在Auto_Close
(或在Workbook_BeforeClose
事件中)执行相反的操作。
实际上,如果您使用事件,最好使用Workbook_AddinInstall
andWorkbook_AddinUninstall
事件。使用这些稍微更“正确”,并且如果您关闭 Excel 然后在提示保存时单击“取消”,也不会触发“关闭”事件。
最简单的解决方案是(对于 xl2003 和 xl2007 )将包含宏的 xls= Application.StartupPath
从您的客户端计算机复制到路径(可以构建一个简单的 vbscript 安装程序来实例化 excel 并检索此信息)。
这样,您的宏将在任何打开的工作簿中可用,因为位于启动路径中的 xls 文件是在 excel 启动时加载的。
我不确定你所说的“出现”是什么意思,但你可以通过调用它来自动执行它
Private Sub Workbook_Open()
End Sub
在ThisWorkbook
对象模块中。那是你要找的吗?
我记得以前的方法是将宏保存在Personal.xls
工作簿中——然后在任何时候打开 Excel 时都可以访问它——这在 2007 年发生了变化吗?