Excel VBA学习笔记:VBA如何选取工作簿文件,打开工作簿
工作中,打开某个工作簿,提取其中数据这样的操作用 VBA 代码如何完成?首先得用VBA控制打开指定的工作簿。下面介绍两种方法。
方式一:
GOF = Application.GetOpenFilename('Excel Files , *.xls;*.xlsx', , '请选取文件', , MultiSelect:=False) ’弹出选取文件的窗口If GOF = 'False' Then ’如果将弹出窗口取消掉,GOF会被赋值False(F为大写) MsgBox '未选择文件,程序中止' Exit SubEnd If Set WB = Workbooks.Open(GOF) '打开选择的文件,并赋值给WB对象变量
就是使用 Application “方法”,之前讲的都是Range的“方法”,用法都是相通的。
Application.GetOpenFilename的参数简解:FileFilter 筛选什么类型的文件,用文件后缀名筛选,只显示指定后缀名的文件。示例中引号内'Excel Files , *.xls;*.xlsx' 都是FileFilter参数的值;只会显示该文件夹中后缀名为xls或xlsx的文件。FilterIndex 不知何意,可省略。Title 标题名字。MultiSelect '多选'开关。此语句执行后会弹出窗口,选取文件后,会将文件名及其路径赋值给GOF变量,GOF是个字符串变量,不是对象。
第1句语句简单点写:GOF =
Application.GetOpenFilename('Excel 文件,*.xls*', MultiSelect:=False)
MultiSelect:=True 就是可以多选文件,这种情况下,GOF是个一维数组(标号起始 1),即使只选了一个文件也是数组格式。
方式二:
With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = False .Filters.Add 'Excel Files', '*.xls,*.xlsx' If .Show = True Then GOF = .SelectedItems(1) Else MsgBox '未选择文件,程序中止' Exit sub End IfEnd With
Application.FileDialog ”方法”,这是单选文件的语法。下面多选文件的语法:
With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = True .Filters.Add 'Excel Files', '*.xls,*.xlsx' If .Show = True Then Set GOF = .SelectedItems Else: Exit Sub End IfEnd With
.SelectedItems 是个类似“字典”结构的对象,赋值给GOF,然后再取出文件名称。
如果是知晓文件名与路径,填写在单元格内,可以直接赋值给变量,然后用Set WB = Workbooks.Open(GOF) 语句,即打开了此工作簿。关闭语句:WB.Close
附一个不用打开工作簿,提取数据:
Set wb = GetObject('e:\temp\' & '文件名')arr = wb.Sheets(1).UsedRange '将使用的单元格赋值给数组wb.Close False 不保存直接关闭
其实这个只是在后台打开了文件,没显示出来。在VBA编码窗口是可以看到打开的工作簿的。