
Итак, я пытаюсь создать макрос, который объединит несколько файлов .csv в один лист Excel. Я использовал для этого следующий урок: vba-код
Однако, как только я ввожу правильный путь к файлам .csv, я получаю «Ошибка выполнения '1004: Извините, мы не смогли найти April2019.csv. Возможно, он был перемещен, переименован или удален?» (April2019.csv — первый файл в папке). Таким образом, макрос, очевидно, находит нужную папку и файл .csv, но затем он останавливается, и я понятия не имею, почему. Я пытался немного изменить код, но он не работает. Код ниже — это то, что я использую в данный момент, спасибо Jie Jenn, которая создала руководство.
Option Explicit
Dim wsMerge As Worksheet
Dim RowInsert As Long
Sub Merge_Files()
Const FolderPath As String = "H:\Documents\Invoices\"
Dim Files As String
Dim wbTemp As Workbook
Dim LastRow As Long
Set wsMerge = ThisWorkbook.Worksheets("Merge")
RowInsert = 2
Files = Dir(FolderPath + "*.csv")
Do Until Files = ""
Set wbTemp = Workbooks.Open(Files)
With wbTemp.Worksheets(1)
LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A2:N" & LastRow).Copy
wsMerge.Range("A" & RowInsert).PasteSpecial xlPasteValues
Application.DisplayAlerts = False
wbTemp.Close False
Application.DisplayAlerts = True
RowInsert = RowInsert + LastRow - 1
End With
Files = Dir()
Loop
MsgBox "File Merge Complete", vbInformation
End Sub
Ошибка возникает, когда я «Set wbTemp = Workbooks.Open(Files)»
Надеюсь, этого контекста достаточно для понимания проблемы.
решение1
Вы указываете только имя файла при использовании этой части кода Set wbTemp = Workbooks.Open(Files)
. Файлы содержат только имя файла, например myfile.csv
. Путь отсутствует. Измените его так, чтобы он стал:
Set wbTemp = Workbooks.Open(FolderPath & Files)