2017-04-11 85 views
1

我期望做的是列出具有特定扩展名的目录及其子目录中的所有文件如.PDB使用VBA查询目录和目录中的所有子文件夹,并返回特定文件扩展名的列A中的完整文件路径

,并返回这些结果说A列中

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

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 
+1

在Google和SO上有很多答案可用。 – ManishChristian

+0

你是正确的appologies。我添加了一个适用于我的用例的示例,但它缺少一个部分。 –

回答

1

与下面的代码更改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 
+0

非常感谢! –

+0

很高兴能够帮助... :) – ManishChristian

+0

将下面的功能添加到此有多困难。要在日期之后添加另一个标题并将其标题为包含文件夹,那么只返回该文件所在文件夹的文件夹名称,而不是完整路径? –

相关问题