文章目录
一、工作簿对象
工作簿指的是 Excel 文件,vba 提供了专门操作 Excel 文件的对象 Workbook
,既工作簿对象,通过该对象,我们
可以获取到 Excel 文件的信息,以及可以对 Excel 文件进行处理,如:新建、保存、删除、复制等
1.1 获取 Excel 文件对应的工作簿对象
根据场景不同,获取工作簿对象的方式也不相同,本文列举几个常见的获取工作簿对象的方式
1. 通过 Excel 的打开顺序,获取工作簿对象
通过 Excel 的打开顺序,获取 Excel 文件对应的工作簿对象,顺序从 1 开始累计,比如先打开 a.xls 又打开 b.xls,
那么 a.xls 的顺序就是1,b.xls 的顺序就是 2,核心语法: Workbooks(N)
Public Sub main()
Dim wb As Workbook
Set wb = Workbooks(1)
Debug.Print wb.Name
End Sub
2. 通过已打开的 Excel 文件的文件名,获取工作簿对象
通过已打开的 Excel 文件的文件名,获取 Excel 文件对应的工作簿对象,核心语法: Workbooks(Name)
Public Sub main()
Dim wb As Workbook
Set wb = Workbooks("学习VBA")
Debug.Print wb.Name
End Sub
3. 获取正处于激活状态的 Excel 文件的工作簿对象
获取正处于激活状态的 Excel 文件的工作簿对象,核心语法: ActiveWorkbook
,激活状态可以简单理解为,当有
多个 Excel 文件打开时,目前正处于显示的那个 Excel 文件即为激活状态
Public Sub main()
Dim wb As Workbook
Set wb = ActiveWorkbook
Debug.Print wb.Name
End Sub
4. 获取正在执行代码的工作簿对象
获取正在运行代码的 Excel 文件所对应的工作簿对象,核心语法: ThisWorkbook
,如果当前是 a.xls 在执行 vba 代
码,那么 ThisWorkbook
返回的就是 a.xls 对应的工作簿对象
Public Sub main()
Dim wb As Workbook
Set wb = ThisWorkbook
Debug.Print wb.Name
End Sub
5. 打开 Excel 文件并获取其对应的工作簿对象
打开 Excel 文件并获取其对应的工作簿对象,核心语法: Workbooks.Open(文件路径)
Public Sub main()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Administrator\Desktop\测试.xls")
End Sub
二、工作簿对象操作 Excel 的常见用法
2.1. 新建并打开 Excel 文件
Public Sub main()
'创建Excel文件
Dim wb As Workbook
Set wb = Workbooks.Add
wb.SaveAs "C:\Users\Administrator\Desktop\新创建的Excel文件.xls"
'给新创建的Excel文件的第一个sheet的第一个单元格添加内容
wb.Sheets("sheet1").Range("a1") = "这是新创建的Excel文件"
End Sub
2.2. 关闭 Excel 文件
代码中第 6 行的 wb.Close True
是关闭并保存的意思,如果仅关闭不保存就写 False
就可以
Public Sub main()
'打开Excel文件
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Administrator\Desktop\测试.xls")
'关闭Excel文件
wb.Close True
End Sub
2.3. 保存 Excel 文件
Public Sub main()
'打开Excel文件
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Administrator\Desktop\测试.xls")
'保存Excel文件
wb.Save
End Sub
2.4. Excel 文件另存为
Public Sub main()
'打开Excel文件
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Administrator\Desktop\测试.xls")
'将Excel文件另存为
wb.SaveCopyAs "C:\Users\Administrator\Desktop\测试2.xls"
End Sub
三、Excel 文件其他常见操作
3.1. 判断 Excel 是否存在
Public Sub main()
If Len(Dir("C:\Users\Administrator\Desktop\测试2.xls")) = 0 Then
Debug.Print "文件不存在!"
Else
Debug.Print "文件存在!"
End If
End Sub
3.2. 判断 Excel 是否打开
主要是通过循环所有打开的 Excel 窗口来进行名称匹配
Public Sub main()
Dim index As Integer
For index = 1 To Windows.Count
If Windows(index).Caption = "测试2.xls" Then
Debug.Print "文件已被打开!"
Exit For
End If
Next index
End Sub
3.3. 复制 Excel 文件
FileCopy
的第一个参数是源文件路径,第二个参数是复制后的目标路径
Public Sub main()
FileCopy "C:\Users\Administrator\Desktop\测试.xls", "C:\Users\Administrator\Desktop\测试-复制后.xls"
End Sub
3.4. 删除 Excel 文件
Public Sub main()
Kill "C:\Users\Administrator\Desktop\测试-复制后.xls"
End Sub