在Excel VBA目录中的文件
下面我们就来看看在Excel VBA程序,通过目录中的所有封闭的工作簿和工作表循环,并显示所有的名字。
下载Book1.xlsx,Book2.xlsx,Book3.xlsx,Book4.xlsx和Book5.xlsx并将其添加到 “C:\测试\”
现状:
添加以下代码行到命令按钮:
1.首先,我们声明类型字符串,一个工作表对象的两个变量和类型整数的两个变量。
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
2.避免屏幕闪烁,关闭屏幕更新。
Application.ScreenUpdating = 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和9)到环路。
5.初始化整数类型的变量,并添加Excel文件的名称第i行的第一列。
i = i + 1 j = 2 Cells(i, 1) = fileName
6.没有简单的方式来从关闭Excel文件中提取数据(或片材的名称)。因此,我们打开Excel文件。
Workbooks.Open (directory & fileName)
7.添加所有的Excel文件的工作表名称到第i行的其他列。
For Each sheet In Workbooks(fileName).Worksheets Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name j = j + 1 Next sheet
8.关闭Excel文件。
Workbooks(fileName).Close
-
Dir函数是一个特殊的功能。要获取其他Excel文件,你可以不带参数再次使用Dir函数。
fileName = Dir()
注:当没有更多的文件名称匹配,Dir函数返回一个零长度字符串(“”)。其结果是,Excel的VBA将离开do while循环。
10.接通屏幕再次更新(循环外)。
Application.ScreenUpdating = True
11.测试程序。
结果: