VBA常用代码(文件名提取)

日常工作中,有时需要读取某个文件夹下的所有文件名,然后将获取的结果放在一张表中,作为文件清单。这个需求使用VBA应该如何实现呢?
按照习惯,先梳理下一下做这个事情的逻辑:

1、创建一个EXCEL文件,也就是保证后面获取的结果有地方存放;
2、获取指定文件夹下的文件名;
3、写入到第1步创建的工作表的单元格中。(注意:文件夹下有多个文件的话,这一步涉及到循环)

以下是VBA代码实现,有两种方式,你可以实际执行下,对比体会一下它们之间的区别:

第一种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub 提取指定路径下的文件名()
Dim i As Integer
Dim str As String
Workbooks.Add
str = Dir("D:\For Damon\*.*")
For i = 1 To 100
ActiveSheet.Range("a" & i) = str
str = Dir
If str = "" Then
Exit For
End If
Next
End Sub

第二种方式

1
2
3
4
5
6
7
8
9
10
Sub 提取打开路径下的文件名()
Dim str()
Dim i As Integer
On Error Resume Next '用户点取消时,避免报错
str = Application.GetOpenFilename(",*.*", , , , True)
Workbooks.Add
For i = LBound(str) To UBound(str)
ActiveSheet.Range("a" & i) = str(i)
Next
End Sub

将上述代码复制到VBA里面,运行一下,看看有什么区别。