需在ThisWorkbook模块中编写Workbook_Open事件过程,启用开发工具、打开VBA编辑器定位ThisWorkbook、正确输入事件代码、保存为.xlsm格式,并验证宏启用状态。

如果您希望Excel工作簿在打开时自动执行特定宏程序,则需在ThisWorkbook模块中编写Workbook_Open事件过程。该事件属于应用程序级触发器,仅当工作簿被加载至Excel内存并完成初始化后立即运行。以下是具体实现步骤:
一、启用开发工具选项卡
确保Excel界面中可访问VBA编辑器,需先激活“开发工具”选项卡。该选项卡默认处于隐藏状态,启用后才能进入VBA环境进行代码编写。
1、点击Excel左上角“文件”菜单,选择“选项”。
2、在弹出的“Excel选项”窗口中,点击左侧“自定义功能区”。
3、右侧主面板中,在“主选项卡”列表下勾选“开发工具”复选框。
4、点击“确定”按钮保存设置。
二、打开VBA编辑器并定位ThisWorkbook对象
ThisWorkbook是代表当前工作簿的VBA对象,其Open事件专用于响应工作簿打开动作。必须在此对象内编写代码,而非普通模块或Sheet对象中,否则事件不会被触发。
1、在Excel功能区切换至“开发工具”选项卡。
2、点击“Visual Basic”按钮,打开VBA编辑器(快捷键Alt+F11)。
3、在左侧“工程资源管理器”窗口中,展开当前工作簿节点(通常显示为VBAProject(文件名.xlsx))。
4、双击ThisWorkbook项,右侧代码窗口将显示该对象的默认事件代码区域。
三、编写Workbook_Open事件过程
Workbook_Open是ThisWorkbook对象的内置事件过程名,名称必须完全一致且区分大小写。Excel在打开工作簿时自动识别并调用该过程,无需手动运行或额外绑定。
1、在ThisWorkbook代码窗口中,从顶部下拉列表左侧选择Workbook。
2、从顶部下拉列表右侧选择Open,VBA编辑器将自动生成空的Private Sub Workbook_Open()...End Sub结构。
3、在Sub与End Sub之间插入所需宏语句,例如:
MsgBox "工作簿已打开"
Sheets("首页").Range("A1").Value = Now
4、确认代码无语法错误,关闭VBA编辑器。
四、保存为启用宏的工作簿格式
标准.xlsx格式不支持存储VBA代码,若未更改文件类型,保存后所有宏将丢失,Open事件亦无法保留。必须使用支持宏的文件扩展名,否则设置无效。
1、返回Excel主界面,点击“文件”→“另存为”。
2、在“另存为”对话框中,点击“浏览”进入保存位置。
3、在“保存类型”下拉菜单中,选择Excel启用宏的工作簿(*.xlsm)。
4、输入文件名,点击“保存”按钮。
五、验证Open事件是否生效
事件是否成功注册取决于代码位置、文件格式及宏安全性设置。即使代码正确,若宏被禁用,Open事件也不会执行。需通过实际打开操作检验结果。
1、关闭当前工作簿,确保Excel进程未残留。
2、重新双击保存后的.xlsm文件图标,或在Excel中使用“文件”→“打开”加载该文件。
3、观察是否出现预设提示(如MsgBox),或检查目标单元格/工作表是否按代码逻辑更新。
4、若无反应,检查Excel选项中的宏设置是否为“启用所有宏”或“禁用所有宏并发出通知”,并在提示时选择启用内容。










