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。