EP02. “Close and Open 关闭和打开工作簿”
🔒 登录后可标记已读- 这篇教你用 VBA 控制工作簿的关闭和打开
- 包含几种不同的关闭写法,各自适合的场景不一样
- 也教怎么弹出"打开文件"对话框,让用户自己选文件再打开
- 前置知识是知道 Workbooks 集合的概念(代表所有目前开着的工作簿)
- 学完能写出批次处理多个文件的基础操作
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
关闭工作簿的几种写法
Workbooks("close-open.xlsm").Close
Workbooks(1).Close
ActiveWorkbook.Close
Workbooks.Close
代码说明:
Workbooks("close-open.xlsm").Close:按文件名指定关闭Workbooks(1).Close:按索引编号关闭(1 代表第一个打开的工作簿)ActiveWorkbook.Close:关闭当前正在使用的工作簿Workbooks.Close:关闭所有目前打开的工作簿
方法怎么选
| 写法 | 适合场景 | 备注 |
|---|---|---|
Workbooks("名称").Close | 知道确切文件名,只想关这一份 | 文件名打错会报错 |
Workbooks(1).Close | 只想关"第一个打开的" | 索引会随打开顺序变,不够稳定 |
ActiveWorkbook.Close | 只想关"目前正在操作的" | 依赖当下哪个是 active,要先确认 |
Workbooks.Close | 想一次关掉全部打开的工作簿 | 未存档的文件会逐一跳出存档提示 |
打开工作簿
Workbooks.Open ("sales.xlsx")
如果没有指定完整路径,Excel 会默认到程序设定的默认文件夹去找这个文件。
用对话框选择文件再打开
Sub Open_Selected_File()
Dim MyFile As String
MyFile = Application.GetOpenFilename()
Workbooks.Open (MyFile)
End Sub
代码说明:
Application.GetOpenFilename():只是弹出"打开文件"对话框,让用户选择文件,本身不会真的打开文件,只是把用户选中的文件路径存进MyFileWorkbooks.Open (MyFile):拿到路径后才真正执行打开
[截图:运行 Open_Selected_File 后弹出的 Windows 标准"打开文件"对话框,可以浏览选择要打开的 Excel 文件]
代码怎么运行
Alt + F11打开 VBA 编辑器,Insert → Module,贴入代码- 回到工作表放命令按钮,绑定对应的 Sub
- 点击按钮,观察对话框和文件打开/关闭的结果
学完你会
- ✅ 能视场景挑对写法关闭一份、多份或全部工作簿
- ✅ 能用
Workbooks.Open依已知路径打开指定文件 - ✅ 能用
GetOpenFilename弹出对话框,让使用者自选文件再打开
常见错误
- 以为
GetOpenFilename会自动打开文件,结果代码只弹了选择框、文件却没打开——一定要接着写Workbooks.Open - 用户在对话框里点了 Cancel,
GetOpenFilename会返回 False,如果没有判断这个情况直接拿去Workbooks.Open (False),会报错
Sources
Blog / Website: