开发VBA应用离不开文件操作。最常用的需求是现有工作簿的打开、关闭、保存,以及新工作簿的创建和保存。
文件操作主要涉及两个对象,一个是workbook,指某一个具体的工作簿。另一个是workbooks,就是所有工作簿的集合。工作簿的打开及创建是在所有工作簿的集合层面的操作,需要用到workbooks集合对象。工作簿的保存、关闭因为只涉及某一个具体的工作簿,需要用到workbook对象。
1. 现有工作簿的打开、关闭和保存
1.1 Workbooks对象的open方法用于打开工作簿。使用该方法需注意以下几点:
a) 该方法有14个参数, 但是最常用的只有三个参数,分别是FileName, ReadOnly, Password. 分别位于1,3,5这几个位置,大部分情况下,调用时,只需要在这几个位置给出值就可以了。
b) Open方法返回值是一个workbook对象。
1.2工作簿打开之后,可以用workbook对象的close方法关闭,使用该方法需注意两点:
a) Workbook.Close False表示不保存的关闭工作簿。
b) Workbook.Close True 表示保存的同时关闭工作簿。
1.3也可以用workbook对象的save方法单独保存工作簿。
下面这个示例,我们假设在d:\myvba目录下有一个test.xlsx文件,密码是123456,我们用上面讲的方法打开test.xlsx工作簿,读取里面的数据到dataarr中,然后保存并关闭。
filename=”d:\myvba\test.xlsx”
Set wb1 = Workbooks.Open(filename, ,FALSE , , "123456")
With wb1
If .ReadOnly = True Then
.Close
MsgBox "工作薄被其它用户锁定,请稍后再试。"
GoTo plannederrorlabel
End If
.Sheets(1).AutoFilterMode = False
datarows= .Sheets(1).Range("a65536").End(xlUp).Row
ReDim dataarr(1 To datarows, 1 To 9)
dataarr = .Sheets(1).Range(“A1:J” & cstr(datarows))
.Close True
End With
2. 创建新工作簿以及新工作簿的命名和保存
创建新工作簿使用workbooks.add方法。创建的新工作簿可以使用workbook对象的saveas方法命名及保存。以下示例创建一个新工作簿并以test.xlsx为名保存在当前目录下。
Set wb1=Workbooks.add
Wb1.saveas(“test.xlsx”)