添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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
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
End Sub

第2种遍历方式:For To

Sub sub3()
  Dim i As Integer
  For i = 1 To Workbooks.Count
     Debug.Print Workbooks.Item(i).Name
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属性 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。