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编码窗口是可以看到打开的工作簿的。

(0)

相关推荐