Excel VBA CMD в список содержимого каталога

Обновить

April 2019

Просмотры

63 раз

1

Как я могу изменить этот Excel VBA для:

  1. Перечислите пути каталогов, а не только файлы?
  2. Фильтр из системы и скрытые файлы?

Вот текущий VBA:

Sub MM()
    Dim fResults As Variant
    fResults = GetFiles("C:\Temp")
    Range("A1").Resize(UBound(fResults) + 1, 1).Value = _ 
    WorksheetFunction.Transpose(fResults)
End Sub


// UDF to populate array with files, assign to a Variant variable.
Function GetFiles(parentFolder As String) As Variant
    GetFiles = Filter(Split(CreateObject("WScript.Shell").Exec("CMD /C DIR """ & parentFolder & _
        IIf(Right(parentFolder, 1) = "\", vbNullString, "\") & "*.*"" /S /B /A:-D").StdOut.ReadAll, vbCrLf), ".")
End Function

2 ответы

2

The answer is in changing the parameters for the dir command.

Use:

DIR /S /B /A-H-S

The -D currently specified hides the directories. Full explanation of the dir parameters can be found here https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/dir

2

Your Filter … IIF … construct is also removing the directories. Get rid of it. Something like

GetFiles = Split(CreateObject("WScript.Shell").Exec("cmd /c dir """ & parentFolder & """ /A-H-S /B /S").StdOut.ReadAll, vbNewLine)

might better do what you want