在Excel 2007中安装VBA宏

在Excel 2007中安装VBA宏,excel,excel-2007,vba,Excel,Excel 2007,Vba,我在Excel2003电子表格中有一个VBA宏,我想在运行Excel的机器上“安装”它 我在本地计算机上创建了一个“受信任的位置”,我知道如何将模块复制到现有工作簿,并分配一个键组合来调用它,但我不知道如何使宏在有人启动Excel时自动显示。帮助?我不知道你说的“出现”是什么意思,但是你可以通过从中调用来自动执行它 Private Sub Workbook_Open() End Sub 在此工作簿的对象模块中。这就是您要找的吗?我不确定您所说的“出现”是什么意思,但您可以通过从中调用来自动执

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


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

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

Private Sub Workbook_Open()

End Sub

此工作簿的对象模块中。这就是您要找的吗?

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

Private Sub Workbook_Open()

End Sub

此工作簿的对象模块中。这就是您要找的吗?

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

我记得以前的方法是将宏保存在
Personal.xls
工作簿中,然后它随时可以访问您打开了Excel-2007年是否已更改


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

那是一种方式。更好的方法是(现在也是)创建外接程序,然后可以通过工具->外接程序启用和禁用该外接程序。(即使关闭并重新启动Excel,外接程序仍将保持启用状态)。您可以将任何.XLS文件另存为外接程序(.XLA)

在外接程序中,您可以使用
Auto\u Open
方法:

Private Sub Auto_Open()

    DoStuff

End Sub
…或者,您可以按照Ryan的建议,连接
工作簿\u Open
事件

当然,由于用户可以禁用外接程序,因此您还需要在
Auto\u Close
中(或在
Workbook\u BeforeClose
事件中)执行相反的操作

实际上,如果您使用事件,最好使用
工作簿添加安装
工作簿添加安装
事件。使用这些选项更为“正确”,还有一个好处,即如果关闭Excel,然后在提示保存时单击“取消”,则不会触发“关闭”事件


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

那是一种方式。更好的方法是(现在也是)创建外接程序,然后可以通过工具->外接程序启用和禁用该外接程序。(即使关闭并重新启动Excel,外接程序仍将保持启用状态)。您可以将任何.XLS文件另存为外接程序(.XLA)

在外接程序中,您可以使用
Auto\u Open
方法:

Private Sub Auto_Open()

    DoStuff

End Sub
…或者,您可以按照Ryan的建议,连接
工作簿\u Open
事件

当然,由于用户可以禁用外接程序,因此您还需要在
Auto\u Close
中(或在
Workbook\u BeforeClose
事件中)执行相反的操作

实际上,如果您使用事件,最好使用
工作簿添加安装
工作簿添加安装
事件。使用这些选项更“正确”,还有一个好处,即如果关闭Excel,然后在提示保存时单击“取消”,则不会触发“关闭”事件。

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

这样,您的宏就可以在任何打开的工作簿中使用,因为startuppath中的xls文件是在excel启动时加载的。

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

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

+1表示更干净(尽管要求更高)的解决方案。这听起来像是“正确的方法”。+1表示更干净(尽管要求更高)的解决方案。这听起来像是“正确的方法”。