VBA Workbook 工作簿

1 VBA Workbook 简介

Workbook对象表示一个打开的Excel文件。

通过Workbook对象,我们能够实现Workbook的以下功能。


一、 基本操作

操作 说明
遍历 查看所有已经打开的工作簿
新建 新建工作簿,并保存
打开 打开已有的工作簿
关闭 关闭指定的打开的工作簿
关闭所有 关闭所有打开的工作簿

二、常用属性

属性 说明
Name 文件名称
Path 文件路径
FullName 完整名称(含路径与名称)
Sheets 工作表集合

2 VBA Workbook基本操作

基本操作包括:遍历、新建、打开、关闭、关闭所有。


2.1 VBA 遍历工作簿Workbook

Workbooks对象(最后多一个s)包含打开的多个Workbook对象;

通过For Each或For To进行遍历,获取每一个Wokbook。


示例:Excel程序打开了三个Excel文件:a.xlsm、b.xlsm、c.xlsm。


第1种遍历方式:For Each

Sub sub1()
  For Each wb In Application.Workbooks
    Debug.Print wb.Name
  Next

End Sub

Application.Workbooks:所有打开的工作簿的集合。也可以直接简写为Workbooks。其中元素类型为Workbook。

Workbook.Name:工作簿的文件名。

输出结果:

a.xlsm
b.xlsm
c.xlsm

Application.Workbooks简写为Workbooks,输出结果相同。

Sub sub2()
  For Each wb In Workbooks
    Debug.Print wb.Name
  Next
End Sub

第2种遍历方式:For To

Sub sub3()
  Dim i As Integer
  For i = 1 To Workbooks.Count
     Debug.Print Workbooks.Item(i).Name
  Next
End Sub

Workbooks.Count:工作簿集合中的元素个数。

Workbooks.Item(i):获取工作簿集合中的第i个工作簿。下标从1开始。


2.2 VBA Workbooks.Item属性

返回下标对应的工作簿。


语法

Property Item(Index) As Workbook

从当前打开的工作簿集集合中获取Index对应的工作簿对象。

只读属性。

Index:可以是数值下标,或者文件名。


示例

例1:通过序号获取Workbook对象。

Sub sub3_1()
  Dim wb1 As Workbook
  Set wb1 = Workbooks.Item(2)
  Debug.Print wb1.FullName
End Sub

准备:先打开文件 D:\小步教程1.xlsx。

输出内容:

D:\小步教程1.xlsx

例2:通过文件名获取Workbook对象。

Sub sub3_2()
  Dim wb1 As Workbook
  Set wb1 = Workbooks.Item("小步教程1.xlsx")
  Debug.Print wb1.FullName
End Sub

2.3 VBA新建工作簿

Workbook.Add方法:新建工作簿。

Workbook.SaveAs方法:保存文件。


示例:新建工作簿,并保存文件。

Sub sub4()
  Dim wb As Workbook
  Set wb = Workbooks.Add
  wb.SaveAs ("D:\小步教程1.xlsx") 
End Sub

新建工作簿会处于打开状态,并直接保存文件。


2.4 VBA打开工作簿

Workbooks.Open:打开工作簿。

示例:打开指定Excel文件。

Sub sub5()
  Dim wb As Workbook
  Set wb = Workbooks.Open("D:\小步教程1.xlsx")
  Debug.Print wb.Name
End Sub

2.5 VBA 保存工作簿

Workbook.Save:保存工作簿。

示例

Sub sub5_2()
  Dim wb1 As Workbook
  Set wb1 = Workbooks.Item("小步教程1.xlsx")
  wb1.Save
End Sub

编辑文件后,运行上述代码,再关闭Excel文件,则不会提示未保存。说明保存成功。

如果未保存过的文件,需要通过SaveAs进行保存。


2.6 VBA关闭工作簿

Workbook.Close:关闭工作簿。

示例:关闭已打开的Excel文件 D:\小步教程1.xlsx。

Sub sub6()
  Dim wb As Workbook
  '根据文件名获取已打开工作簿
  Set wb = Workbooks.Item("小步教程1.xlsx")
  '关闭工作簿
  wb.Close
End Sub

如果文件没有打开,Works.books.Item( )会报错:下标越界。


2.7 VBA关闭所有工作簿

Workbooks.Close:关闭所有工作簿。

示例代码

Sub sub7()
  Workbooks.Close
End Sub

关闭所有打开的Excel文件,Excel应用程序并不会关闭。


3 VBA Workbook 属性

Workbook属性列表

Workbook属性 说明
Name 文件名称
Path 文件路径
FullName 文件完整名称,即包含路径名与文件名
Sheets 工作表集合。 具体使用见下节WorkSheet。

示例:

Sub sub8()

  Dim wb As Workbook
  Set wb = Workbooks.Item("小步教程1.xlsx")

  Debug.Print wb.Name   '输出 小步教程1.xlsx
  Debug.Print wb.Path   '输出 D:
  Debug.Print wb.FullName '输出 D:\小步教程1.xlsx
  Debug.Print wb.Sheets.Count '输出 1

End Sub

当前Excel文件中只有Sheet1这个工作表,所以wb.Sheets.count 输出1。