下面我们就来看看在Excel VBA程序,通过目录中的所有封闭的工作簿和工作表循环,并显示所有的名字。

下载Book1.xlsx,Book2.xlsx,Book3.xlsx,Book4.xlsx和Book5.xlsx并将其添加到 “C:\测试\”

现状:

Files in a Directory Example

添加以下代码行到命令按钮:

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文件。

  1. 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
  1. Dir函数是一个特殊的功能。要获取其他Excel文件,你可以不带参数再次使用Dir函数。

fileName = Dir()

注:当没有更多的文件名称匹配,Dir函数返回一个零长度字符串(“”)。其结果是,Excel的VBA将离开do while循环。

10.接通屏幕再次更新(循环外)。

Application.ScreenUpdating = True

11.测试程序。

结果:

Files in a Directory in Excel VBA