
そこで、複数の .csv ファイルを 1 つの 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
「wbTemp = Workbooks.Open(Files) を設定する」とエラーが発生します。
これが問題の背景を十分に表していることを願っています。
答え1
このコード部分を使用する場合は、ファイル名のみを指定しますSet wbTemp = Workbooks.Open(Files)
。ファイルには、たとえばファイル名のみが含まれますmyfile.csv
。パスがありません。次のように変更します。
Set wbTemp = Workbooks.Open(FolderPath & Files)