スポンサーリンク
Excel VBAを使って効率的なデータ処理を行う上で、フォルダ内の複数のExcelファイルを一括で処理する必要があります。この記事では、VBAを使用してフォルダ選択ダイアログを表示し、選択されたフォルダ内のExcelファイルを順に処理する方法に焦点を当てます。
スポンサーリンク
実装
Sub Sample()
Dim Fld As String
Dim Fname As String
Dim Wb As Workbook
' フォルダ選択ダイアログを表示
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then
Fld = .SelectedItems(1) & "\"
Else
' キャンセル時の処理
' Debug.Print "キャンセルしました。"
Exit Sub
End If
End With
' フォルダ内のExcelファイルを順に処理
Fname = Dir(Fld & "*.xlsx")
Do Until Fname = ""
' Debug.Print Fld & Fname
' Excelファイルを開く
Set Wb = Workbooks.Open(Fld & Fname)
' Wbに対する処理
' Excelファイルを閉じる
Wb.Close
Fname = Dir()
Loop
End Sub
解説
Sub Sample()
' ... 省略 ...
End Sub
このサブルーチンはメインの実行部分です。
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then
Fld = .SelectedItems(1) & "\"
Else
' キャンセル時の処理
' Debug.Print "キャンセルしました。"
Exit Sub
End If
End With
Application.FileDialog
オブジェクトを使用して、フォルダ選択ダイアログを表示しています。ユーザーがフォルダを選択した場合、そのパスを Fld
変数に格納します。キャンセルされた場合はサブルーチンを終了します。
Fname = Dir(Fld & "*.xlsx")
Do Until Fname = ""
' Debug.Print Fld & Fname
' Excelファイルを開く
Set Wb = Workbooks.Open(Fld & Fname)
' Wbに対する処理
' Excelファイルを閉じる
Wb.Close
Fname = Dir()
Loop
Dir
関数を使用して、指定されたフォルダ内の .xlsx
ファイルの一覧を取得します。取得したファイル名を使用して、Workbooks.Open
メソッドでExcelファイルを開き、Wb
変数に代入します。その後、Wb
に対して行いたい処理を記述し、最後に Wb.Close
でExcelファイルを閉じます。これを繰り返すことで、フォルダ内の全てのExcelファイルに対して同じ処理を行います。
まとめ
このVBAコードを利用することで、Excel VBAを使用してフォルダ内のExcelファイルを一括で処理する手法が理解できます。この手法を応用すれば、データの一括処理や集計など、様々な業務に効果的に活用できます。