1

Я пытаюсь перевести одноразовый макрос в цикл «До тех пор», где макрос будет перебирать файлы в моей папке. У меня проблемы с редактированием макроса для этой цели. Я знаю, что мне нужно иметь; Переменная для пути к файлу, переменная для префикса к файлу, включает мой счетчик и тип файла ".dat", интегрированный в скрипт. Буду очень признателен за любые советы по синтаксису или оптимизации моего громоздкого макроса.

Sub CSV_Import()
Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")
'set to current worksheet name

strFile = Application.GetOpenFilename("All Files (*.*),*.*", , "Please selec text file...")

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
 .TextFileParseType = xlDelimited
 .TextFileCommaDelimiter = True
 .Refresh
End With
End Sub

Спасибо за ваше время.

1 ответ1

0

Вы можете попробовать обернуть текущий код в такой цикл, используя Dir . Я не смог проверить ws.queryTables.Add бит, но бит Dir циклически перебирает файлы в указанной папке. это также предполагает, что вы хотите все файлы .dat в указанной папке.

Sub CSV_Import()
Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")
'set to current worksheet name

strFile = Dir("\path\to\file\*.dat")
Do While Len(strFile) > 0
    With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .Refresh
    End With
    'Debug.Print strFile
    strFile = Dir
Loop
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .