使用VBA查询目录和目录中的所有子文件夹,并返回特定文件扩展名的A列中的完整文件path

我正在做的是列出一个目录及其子目录中的所有文件与特定的扩展名如.pdb

并将结果返回给A列。

下面的代码工作,但我不确定的语法只用于返回一个特定的文件扩展名types。

Sub ListFiles() Const sRoot As String = "Y:\Engineering\Database Versions\Chillers" Dim t As Date Application.ScreenUpdating = False With Columns("A:C") .ClearContents .Rows(1).Value = Split("File,Size,Date", ",") End With t = Timer NoCursing sRoot Columns.AutoFit Application.ScreenUpdating = True End Sub Sub NoCursing(ByVal sPath As String) Const iAttr As Long = vbNormal + vbReadOnly + _ vbHidden + vbSystem + _ vbDirectory Dim col As Collection Dim iRow As Long Dim jAttr As Long Dim sFile As String Dim sName As String If Right(sPath, 1) <> "\" Then sPath = sPath & "\" Set col = New Collection col.Add sPath iRow = 1 Do While col.count sPath = col(1) sFile = Dir(sPath, iAttr) Do While Len(sFile) sName = sPath & sFile On Error Resume Next jAttr = GetAttr(sName) If Err.Number Then Debug.Print sName Err.Clear Else If jAttr And vbDirectory Then If Right(sName, 1) <> "." Then col.Add sName & "\" Else iRow = iRow + 1 If (iRow And &H3FF) = 0 Then Debug.Print iRow Rows(iRow).Range("A1:C1").Value = Array(sName, _ FileLen(sName), _ FileDateTime(sName)) End If End If sFile = Dir() Loop col.Remove 1 Loop End Sub 

更改您的Else...End If使用下面的代码部分,它将只打印.pdb扩展名的文件。

 'Your existing code Else If InStr(1, sName, ".pdb", vbTextCompare) > 0 Then iRow = iRow + 1 If (iRow And &H3FF) = 0 Then Debug.Print iRow Rows(iRow).Range("A1:C1").Value = Array(sName, _ FileLen(sName), _ FileDateTime(sName)) End If End If 'Your existing code