Перебирая файлы, открывается только первый файл - PullRequest
0 голосов
/ 07 декабря 2018

Я прочитал все ответы по переполнению стека, но не могу решить эту проблему.Я пытаюсь открыть каждый файл в папке, но действие цикла «Пока» правильно открывает первый файл, выполняет задачу, сохраняет файл, а затем снова открывает первый файл.Как мне заставить его перейти к следующему файлу?

Sub loopmacro()
    Dim psheet As Worksheet
    Dim imppath As String
    Dim impfile As String
    Dim exppath As String
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim thiswb As Workbook
    Dim opsheet As Worksheet

    Set thiswb = ThisWorkbook
    impfile = Sheets("LOOKUPS").Range("C13")
    imppath = Dir(impfile)
    Application.ScreenUpdating = False
    If Dir(impfile) = "" Then
        MsgBox "There are no files in the PASTE CSV FOLDER"
    Else
        Do While imppath <> ""
            Set wb1 = Workbooks.Open(impfile)
            wb1.Activate
            thiswb.Activate
            Call clear_paste_csv_data_sheet
            wb1.Activate
            Range("A1:F1000").Copy
            thiswb.Activate
            Sheets("Paste CSV here").Select
            Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
            wb1.Close
            thiswb.Activate
            Call calc_data_lines
            exppath = thiswb.Sheets("LOOKUPS").Range("C17")
            Set wb2 = Workbooks.Add
            thiswb.Activate
            Sheets("CNV OUTPUT").Range("A1:A1000").Copy
            wb2.Activate
            Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            wb2.SaveAs Filename:=exppath
            wb2.Close
            imppath = Dir
        Loop
    End If
    Application.ScreenUpdating = True
End Sub

1 Ответ

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

Эта строка относится только к папке, а не к файлу в папке:

Set wb1 = Workbooks.Open(impfile)  

Это должно быть:

Set wb1 = Workbooks.Open(impfile & imppath)  

Это указывает на то, что вы, вероятно, получили свою переменнуюимена вокруг неправильного пути.
Похоже, вы должны иметь:

impPath = Sheets("LOOKUPS").Range("C13")  

и

impfile = Dir(imppath)  

, тогда это будет логически читать:

Set wb1 = Workbooks.Open(imppath & impfile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...