指定したフォルダ内のExcelファイルに対して、同じ処理をする
タイトルのサブルーチンは、以下です。
' 指定したフォルダ内のExcelファイルに対して、同じ処理をする
Private Sub ProcessFilesInFolder(ByVal folderPath As String)
Dim fso As Object
Dim fileName As String
Dim wb As Workbook
Dim file As Variant
' FileSystemObjectを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダ内の各ファイルに対して処理
For Each file In fso.GetFolder(folderPath).Files
If LCase(Right(file.Name, 5)) = ".xlsx" Or LCase(Right(file.Name, 4)) = ".xls" Then ' Excelファイルの拡張子を確認
' ファイルを開く
Set wb = Workbooks.Open(file.Path)
' 必要な処理を実行
Call ProcessWorkbook(wb)
' ファイルを保存
wb.Save
' ファイルを閉じる
wb.Close
End If
Next file
End Sub
Private Sub ProcessWorkbook(ByRef wb As Workbook)
' ここに各ファイルに対する処理を追加
' 例えば、必要な列のコピー、シートの削除、シート名変更など
' 以下にサンプルの処理を追加しています
Dim targetSheet As Worksheet
Dim newSheetName As String
' シートを追加(新しいシート名は変更が必要)
Set targetSheet = wb.Sheets.Add
' 追加したシートの名前を変更(変更が必要)
newSheetName = "変更後のシート名"
targetSheet.Name = newSheetName
' シートの削除
wb.Sheets(2).Delete ' シート名は適切なものに変更
End Sub
各ファイルに対する具体的な処理は ProcessWorkbook サブルーチン内で実装されます。この部分をカスタマイズしてご使用ください。
使用例は、以下です。処理したいフォルダを引数として、ProcessFilesInFolderを呼び出してください。
Private Sub 使用例()
Dim folderPath As String
' フォルダのパスを指定
folderPath = "C:\YourFolderPath\" ' フォルダのパスを適切なものに変更
Call ProcessFilesInFolder(folderPath)
End Sub