使用Excel VBA导入表
下面我们就来看看在Excel VBA程序从其他Excel文件导入表到一个Excel文件。
下载Book4.xlsx,Book5.xlsx并将其添加到 “C:\测试\”
现状:
添加以下代码行到命令按钮:
1.首先,我们声明类型字符串,一个工作表对象的两个变量和Integer类型的一个变量。
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
2.关闭屏幕更新显示警报。
Application.ScreenUpdating = False Application.DisplayAlerts = False
3.初始化变量目录。我们用Dir函数查找第.xl?文件存储在这个目录下。
directory = "c:\test\" fileName = Dir(directory & ".xl??")
注:(?)Dir函数支持使用多个字符(*)和单字符的通配符搜索所有不同类型的Excel文件。
-
fileName变量现在拥有在目录中找到第一个Excel文件的名称。添加一个do while循环。
Do While fileName <> "" Loop
添加以下代码行(在图5,图6,7和8)到环路。
5,还有就是从关闭Excel文件复制工作表没有简单的方法。
因此,我们打开Excel文件。
Workbooks.Open (directory & fileName)
6.导入从Excel文件到进口sheet.xlsm床单。
For Each sheet In Workbooks(fileName).Worksheets total = Workbooks("import-sheets.xlsm").Worksheets.count Workbooks(fileName).Worksheets(sheet.Name).Copy _ after:=Workbooks("import-sheets.xlsm").Worksheets(total) Next sheet
说明:总变量保持跟踪进口sheet.xlsm的工作表的总数。我们使用工作表对象的复制方法将其进口sheets.xlsm的最后一个工作表后复制每个工作表并粘贴。
7.关闭Excel文件。
Workbooks(fileName).Close
-
Dir函数是一个特殊的功能。要获取其他Excel文件,你可以不带参数再次使用Dir函数。
fileName = Dir()
注:当没有更多的文件名称匹配,Dir函数返回一个零长度字符串(“”)。其结果是,Excel的VBA将离开do while循环。
9.开启屏幕更新,并再次显示(循环外)的警报。
Application.ScreenUpdating = True Application.DisplayAlerts = True
10.测试程序。
结果: