VBA Dir 获取文件夹下的文件

获取当前文件夹下的文件与子文件夹。

注:无法查看当前文件夹中的孙子文件与文件夹。

默认情况下只能获取到第1个文件,如果需要获取到其它文件,则需调用多次Dir。

如果需要查看子文件夹,需要设置相应选项。


语法

Dir [ (pathname, [ attributes ] ) ]

查看指定文件夹pathname下的文件与子文件夹。

attributes 可选项。表示查看选项,默认只查看文件,可设置为vbDirectory,则可以查看到子文件夹。


示例

例1:获取C:\的前2个文件名。

Sub sub1()

  Dim fileName As String
  fileName = Dir("c:\") '获取c:\下的第1个文件
  Debug.Print fileName

  fileName = Dir '再次调用Dir,不带参数,表示获取第2个文件
  Debug.Print fileName

End Sub

输出内容:

config.ini
readme.txt

例2:获取C:\的所有文件。不包括下级文件夹。

根据例1中的思路,需要不断循环Dir,一直到读取不到文件,此时Dir会返回空字符串""。

Sub sub2()

  Dim fileName As String
  fileName = Dir("c:\")

  '如果Dir返回空字符串,表示读取结束
  Do While fileName <> ""
     Debug.Print fileName
     fileName = Dir
  Loop

End Sub

输出结果:

config.ini
readme.txt
ServiceOutFile.txt
test1.exe
test1.xlsx

例3:获取c:\的所有文件与文件夹。不包括下级文件夹。

Sub sub3()

  Dim fileName As String
  '选项vbDirectory表示可以获取文件与子文件夹
  fileName = Dir("c:\", vbDirectory)
  
  Do While fileName <> ""
    Debug.Print fileName
    fileName = Dir
  Loop

End Sub

输出结果:

AppData
config.ini
ESD
LenovoDrivers
PerfLogs
Program Files
Program Files (x86)
readme.txt
ServiceOutFile.txt
test1.exe
test1.xlsx
Users
Windows