当前位置:首页> 正文

在 Excel 启动时运行宏

在 Excel 启动时运行宏

 

如果您希望每当启动 Microsoft Excel 时都自动执行某些操作,可以录制或编写一个每当打开工作簿时都将运行的宏。有两个办法可以做到这一点:

录制一个宏,然后用 Auto_Open 这一名称保存它。 将此宏编写为工作簿“打开”事件的 Microsoft Visual Basic for Applications (VBA) 过程。

录制 Auto_Open 宏会受到诸多限制(见下文所述)。与录制 Auto_Open 宏相比,将启动宏编写为工作簿“打开”事件的 VBA 过程功能会强大得多,而且更为灵活,所以是创建启动宏的首选方法。
重要说明    为了允许宏在 Excel 中运行,安全级别必须设置为“中”或“低”。要设置安全级别,请在“工具”菜单上指向“宏”,然后单击“安全性”。有关宏安全性方面的信息,请参阅 Excel 程序中的帮助。
将工作簿设置为在 Excel 启动时自动打开
不管您用上述两种方法中的哪一种来创建宏,都要将宏保存在一个特定的工作簿中。因此,如果您想让这个宏在每次 Excel 本身启动时运行,就必须确保包含此宏的工作簿在 Excel 启动时自动打开。要做到这一点,您必须将包含该启动宏的工作簿(或指向此工作簿的快捷方式)保存在 XLStart 文件夹中。XLStart 文件夹的位置因您所用的 Microsoft Windows? 版本及其配置情况而异。
您可以在Excel“选项”对话框(在“工具”菜单上单击“选项”)的“常规”选项卡上的“启动时打开此项中的所有文件”框中指定您自己的 Excel 启动文件的文件夹。
创建 Auto_Open 宏
如果您录制一个宏并用“Auto_Open”这一名称保存它,每次您打开包含此宏的工作簿时,它都会运行。

如果您想将此宏保存在一个特定的工作簿中,请先打开此工作簿。 在“工具”菜单上,指向“宏”,然后单击“录制新宏”。 在“宏名”框中,键入 Auto_Open。 在“将宏保存在”框中,指定保存宏的位置:
如想在当前工作簿中保存该宏,请选择“当前工作簿”。 如想创建一个新的工作簿来保存该宏,请选择“新工作簿”。 如想将宏保存在一个在启动 Excel 时自动载入的隐藏工作簿中,请选择“个人宏工作簿”。

注意  如果您选择“个人宏工作簿”,Excel 就会创建一个名为 Personal.xls 的隐藏工作簿(如果 Personal.xls 尚不存在)并将宏保存在此工作簿中。一般情况下,Personal.xls 保存在 C:\Documents and Settings\用户名\Application Data\Microsoft\Excel\XLStart 文件夹中,这样每当 Excel 启动时它都会自动载入。如果希望让您录制并保存在 Personal.xls 中的宏能够在某一特定的工作簿上工作,您必须将此工作簿也保存到 XLStart 文件夹中,这样,当 Excel 启动时,它也会打开。

单击“确定”,然后执行要录制的操作。 在“停止录制”工具栏上,单击“停止录制”按钮。 如果您在第 4 步中选择了将宏保存在“当前工作簿”或“新工作簿”中,则一定要将此工作簿保存或移动到某个 XLStart 文件夹中。

录制 Auto_Open 宏有许多限制:

您想执行的许多操作都无法录制。 如果您保存 Auto_Open 宏所用的工作簿已在其“打开”事件中包含了一个 VBA 过程,“打开”事件的这个 VBA 过程将会覆盖 Auto_Open 宏中的所有操作。 如果一个工作簿是通过使用“打开”方法以编程方式打开的,则 Auto_Open 宏将被忽略。 Auto_Open 宏会在任何其他工作簿打开之前运行。所以,如果您录制了操作,希望 Excel 在默认的 Book1 工作簿或从 XLStart 文件夹载入的工作簿上执行这些操作,那么,在您重新启动 Excel 时,Auto_Open 宏将会失败,因为在打开默认工作簿和启动工作簿之前,它就已经运行了。

如果您遇到这些限制,就不应录制 Auto_Open 宏,而必须按本文下一节所述,为“打开”事件创建 VBA 过程。
为工作簿的打开事件创建 VBA 过程
要在打开工作簿时自动运行宏,有另一种方法:使用“Visual Basic 编辑器”在该工作簿的“打开”事件中编写一个 VBA 过程。“打开”事件是一个内置的工作簿事件,它会在您每次打开该工作簿时都运行其宏代码。
下面这一简单示例使用“打开”事件在您打开工作簿时运行宏。

保存并关闭所有打开的工作簿。 打开您要添加宏的工作簿,或创建一个新工作簿。 在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。 在“项目资源管理器”窗口中,右键单击“ThisWorkbook”对象,然后单击快捷菜单中的“查看代码”。 在代码窗口上方的对象列表中,选择“工作簿”。这样,就自动为“打开”事件创建了下面这样一个空过程: Private Sub Workbook_Open()  

End Sub

将下列代码行添加到该过程中: Private Sub Workbook_Open() MsgBox Date Worksheets("Sheet1").Range("A1").Value =? ? ??Date

End Sub

切换到 Microsoft Excel 并保存该工作簿。 关闭然后重新打开该工作簿。当您再次打开该文件时,Excel 将运行 Workbook_Open 过程,在一个消息框中显示今天的日期。 单击消息框中的“确定”。 请注意:Sheet1 上的单元格 A1 中也会包含当前日期,这就是 Workbook_Open 过程的结果。

 

展开全文阅读

相关内容