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。