Microsoft Lab
全部软件
Excel工作簿与工作表对象(Workbook and Worksheet Object)约 5 分钟

Close and Open 关闭和打开工作簿

重点内容


适用版本

桌面版通用(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. 点击按钮,观察对话框和文件打开/关闭的结果

学完你会

常见错误

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

Sources

Blog / Website:

  1. Close and Open
只记在你的浏览器里,换设备不会同步。