Зацикливание файлов в папке в Mac OS X - VBA Excel 2011 - PullRequest
2 голосов
/ 03 сентября 2011

Я пытаюсь перебрать файлы в папке на Mac OS X, используя VBA Excel 2011. Я попробовал следующий код, но он не работает.

Sub ListAllFilesInDir()
    Dim strFile As String
    Dim strPath1 As String

    strPath1 = ActiveWorkbook.FullName
    MsgBox strPath1
    strFile = Dir(strPath1)
    MsgBox strFile
    strFile = Dir()
    MsgBox strFile
    strFile = Dir()
    MsgBox strFile
End Sub

Я получаю имя активногоРабочая книга, когда программа достигает первого MsgBox strFile.Я где-то читал, что использование Dir без аргумента приводит к следующему файлу в папке.Но это не работает для меня.Я получаю пустое окно сообщения для второй команды MsgBox strFile и ошибку (Ошибка времени выполнения 5: недопустимый вызов процедуры или аргумент "для третьей команды MsgBox strFile. У меня в папке 4 файла, которые я пытаюсь перебрать.

Кроме того, что бы я сделал, чтобы перечислять только файлы ".xslx"

1 Ответ

0 голосов
/ 04 сентября 2011

Вот ссылка на описание функции dir (). Ваша проблема в том, что dir (strPath1) установит функцию dir для возврата всех экземпляров этого ТОЧНОГО имени файла по этому пути, который когда-либо будет только одним файлом. Если вы хотите, чтобы все файлы, заканчивающиеся на ".xlsx", попробуйте:

dir(ActiveWorkbook.Path & application.PathSeparator & "*.xlsx")

Также, если у вас есть произвольное количество файлов, которые вы хотите просмотреть, попробуйте следующий код. Это работает, потому что dir возвращает пустую строку после того, как вернул последний файл:

Sub WorkWithFiles()
    Const PATH = "C:\"

    Dim file As String

    file = Dir(PATH & Application.PathSeparator & "*.xlsx")
    Do Until file = ""
        'Run some code on the file in the file variable
        Debug.Print file
        'Then get the next file
        file = Dir("")
    Loop
End Sub
...