MICROSOFT

EP02. “Close and Open 关闭和打开工作簿”

首页 Microsoft 工具 Excel · VBA · Workbook and Worksheet Object · EP02
约 5 分钟· #EP02#Excel#Workbook and Worksheet Object
🔒 登录后可标记已读
  • 这篇教你用 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():只是弹出"打开文件"对话框,让用户选择文件,本身不会真的打开文件,只是把用户选中的文件路径存进 MyFile
  • Workbooks.Open (MyFile):拿到路径后才真正执行打开

[截图:运行 Open_Selected_File 后弹出的 Windows 标准"打开文件"对话框,可以浏览选择要打开的 Excel 文件]


代码怎么运行

  1. Alt + F11 打开 VBA 编辑器,Insert → Module,贴入代码
  2. 回到工作表放命令按钮,绑定对应的 Sub
  3. 点击按钮,观察对话框和文件打开/关闭的结果

学完你会

  • ✅ 能视场景挑对写法关闭一份、多份或全部工作簿
  • ✅ 能用 Workbooks.Open 依已知路径打开指定文件
  • ✅ 能用 GetOpenFilename 弹出对话框,让使用者自选文件再打开

常见错误

  • 以为 GetOpenFilename 会自动打开文件,结果代码只弹了选择框、文件却没打开——一定要接着写 Workbooks.Open
  • 用户在对话框里点了 Cancel,GetOpenFilename 会返回 False,如果没有判断这个情况直接拿去 Workbooks.Open (False),会报错

Sources

Blog / Website:

  1. Close and Open