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