Excel VBA Поиск нескольких форматов файлов (PDF, DOC, DOCX, XLS) - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть код для списка элементов в папках.Слишком много файлов, которые он выдает # N / A после некоторого времени работы.Я хотел бы ограничить количество файлов, которые он ищет.Мне не нужно, например, .JPG и .TIFF.Как указать мой поиск только на .PDF, .DOC, .XLS и т. Д.?

Я пытался:

MyFileName = Dir(Key & "*.PDF" Or "*.DOC" Or ".DOCX" Or ".XLS") 

Вот мой код:

For Each Key In AllFolders.keys
    'MyFileName = Dir(Key & "*.*")
    MyFileName = Dir(Key & "*.PDF") 'only PDF files
    Do While MyFileName <> ""
        AllFiles.Add (Key & MyFileName), ""
        MyFileName = Dir
    Loop
Next

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

DIR не принимает «маску» для нескольких расширений файлов, но создать свой собственный небольшой вопрос.

Dim ext As String, myFileName As String

For Each key In AllFolders.keys
    myFileName = Dir(key & "*.*")
    Do While myFileName <> vbNullString
        ext = Mid(myFileName, InStrRev(myFileName, Chr(46)))
        Select Case LCase(ext)
            Case ".pdf", ".doc", ".docx", ".xls"
                Debug.Print myFileName
                AllFiles.Add (key & myFileName), vbNullString
            Case Else
                'do nothing
        End Select
        myFileName = Dir
    Loop
Next key
0 голосов
/ 07 декабря 2018

Чтобы ограничить список файлов в вашей коллекции определенными файлами, вы можете изменить цикл Do:

Do While myFileName <> ""
    If myFileName Like "*.PDF" Or _
        myFileName Like "*.DOC" Or _
        myFileName Like "*.XLS" Then
        AllFiles.Add (Key & myFileName), ""
    End If
        myFileName = Dir
Loop

Однако, похоже, это проблема XY

и ваш реальный вопрос должен быть о том, почему вы получаете #NA ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...