Можно ли использовать несколько символов подстановки в функции VBA Dir? - PullRequest
0 голосов
/ 29 августа 2018

Я работаю над макросом для вывода имен файлов. У меня есть каталог, содержащий файлы журналов для промышленного пакетного процесса. Каждой партии присваивается 5-значный номер партии, и для каждой партии есть файлы .csv и .txt. Имя файла для обоих файлов одинаковое и содержит номер партии, например:

XYZ 53482 20180827.csv
XYZ 53482 20180827.txt
XYZ 53483 20180828.csv
XYZ 53483 20180828.txt
XYZ 53484 20180829.csv
XYZ 53484 20180829.txt

Пока мой макрос:

Sub FindBatchFile()
Dim Batch As Double
Dim DirPath As String, r As Integer

Batch = InputBox("Enter Batch Number")

DirPath = Dir("C:\Data\* " & Batch & "*", vbDirectory)
r = 1
Workbooks.Add
MsgBox (DirPath)

Do Until DirPath = ""
Cells(r, 1).Value = DirPath
MsgBox (DirPath)
r = r + 1
DirPath = Dir
Loop

End Sub

Это работает адекватно, но вывод содержит файлы .csv и .txt. Есть ли способ использовать несколько подстановочных знаков в функции Dir (т. Е. Включить критерий "*.csv", а также "*Batch*")?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 29 августа 2018

Я полагаю, что следующее будет работать так, как вы ожидаете, просто добавив .csv в свой DirPath:

Sub FindBatchFile()
Dim Batch As Double
Dim DirPath As String, r As Integer

Batch = InputBox("Enter Batch Number")

DirPath = Dir("C:\Data\* " & Batch & "*.csv", vbDirectory)
r = 1
Workbooks.Add
MsgBox (DirPath)

Do Until DirPath = ""
    Cells(r, 1).Value = DirPath
    MsgBox (DirPath)
    r = r + 1
    DirPath = Dir
Loop

End Sub
...