Dim A, B
'複数ファイルを開く
A = ThisWorkbook.Path & "\TEST" 'フォルダパス
B = Dir(A & "\*") 'ファイル名を取得
Do While B <> ""
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
B = Dir() '次のファイル名を取得
Loop
では、解説していきます。
VBAでDirを使って複数ファイルを開く
複数のファイルを開くには、「Dir」を使うと便利です。
複数のファイルを開く方法について、解説します。
ファイルを開く方法
まずは、ファイルを開く方法です。
ファイルを開くには、「Workbooks.Open」を使います。
VBAコードを書くと次のようになります。
Sub TEST1()
'ファイルパスを指定
Dim A
A = ThisWorkbook.Path & "\TEST\TEST.xlsx"
'ファイルを開く
Workbooks.Open Filename:=A
End Sub
「Filename:=〇〇」の〇〇に、開きたいファイルパスを入力します。
では、次のようなフォルダ構成で試してみます。
フォルダ構成
「TEST」フォルダに「TEST.xlsx」ファイルが入っています。
この「TEST.xlsx」ファイルを開きます。
では、VBAコードを実行してみます。
ファイルを開く
「TEST.xlsx」ファイルを開くことができました。
フォルダ指定+Dirでファイルを開く
次は、フォルダを指定して、そのフォルダの中のファイルを開く、というのをやってみます。
Dirを使ったVBAコードは次のようになります。
Sub TEST2()
Dim A, B
'フォルダパスを取得
A = ThisWorkbook.Path & "\TEST"
'ファイル名を取得
B = Dir(A & "\*")
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
End Sub
Sub TEST3()
Dim A, B
'フォルダパスを指定
A = ThisWorkbook.Path & "\TEST"
'ファイル名を取得
B = Dir(A & "\*")
Do While B <> ""
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
B = Dir() '次のファイル名を取得
Loop
End Sub
Dim A, B
'ファイル名を取得
B = Dir(A & "\*")
Do While B <> ""
B = Dir() '次のファイル名を取得
Loop
フォルダの中のファイル名を取得する際に、「Dir」が使えます。
次のようなフォルダ構成で試してみます。
フォルダ構成
「TEST」フォルダに「TEST1.xlsx~TEST5.xlsx」が入っています。
VBAコードを実行してみます。
複数のファイルを開く
「TEST1.xlsx~TEST5.xlsx」のファイルを開くことができました。
複数のExcelファイルから値を取得
つづいて、複数のExcelファイルを開いて、開いたファイルから値を取得してみます。
VBAコードはこちらになります。
Sub TEST4()
Dim A, B
'フォルダパスを指定
A = ThisWorkbook.Path & "\TEST"
'ファイル名を取得
B = Dir(A & "\*")
i = 0
Do While B <> ""
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
i = i + 1
'ファイル名を取得
ThisWorkbook.ActiveSheet.Cells(i, 1) = ActiveWorkbook.Name
'セルの値を取得
ThisWorkbook.ActiveSheet.Cells(i, 2) = ActiveWorkbook.ActiveSheet.Cells(1, 1)
'ファイルを閉じる
ActiveWorkbook.Close
B = Dir()
Loop
End Sub
Sub TEST5()
Dim A, B
'フォルダパスを指定
A = ThisWorkbook.Path & "\TEST"
'ファイル名を取得
B = Dir(A & "\*.csv")
Do While B <> ""
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
B = Dir() '次のファイル名を取得
Loop
End Sub
Sub TEST6()
Dim A, B
'フォルダパスを指定
A = ThisWorkbook.Path & "\TEST"
'CSVのファイル名を取得
B = Dir(A & "\*.csv")
i = 0
Do While B <> ""
'ファイルを開く
Workbooks.Open Filename:=A & "\" & B
i = i + 1
'ファイル名を取得
ThisWorkbook.ActiveSheet.Cells(i, 1) = ActiveWorkbook.Name
'ファイルの値を取得
ThisWorkbook.ActiveSheet.Cells(i, 2) = ActiveWorkbook.ActiveSheet.Cells(1, 1)
'ファイルを閉じる
ActiveWorkbook.Close
B = Dir() '次のファイル名を取得
Loop
End Sub