Excel VBA: フォルダ内のファイルに対して処理を行う方法
Excel VBA を使用して、特定のフォルダ内の複数のファイルに対して処理を行う方法を学びましょう。
具体的には、指定されたフォルダ内のすべての Excel ファイルを開き、特定のシートの 2 行目をコピーして別のシートの先頭に挿入するプロシージャを作成します。
コード
Sub InsertFourthRowToFirstRow2()
Dim folderPath As String
Dim ws As Worksheet
Dim i As Long
Dim fileName As String
Dim externalWorkbook As Workbook
' フォルダパスを指定
folderPath = ThisWorkbook.Path
' シート名を適切に変更
Set ws = ThisWorkbook.Sheets("Sheet1")
' フォルダ内の全てのファイルに対して処理を実行
fileName = Dir(folderPath & "\*.xls*")
Do While fileName <> ""
' 「まとめ.xlsm」以外のファイルのみ処理
If fileName <> "まとめ.xlsm" Then
On Error Resume Next
Set externalWorkbook = Workbooks.Open(folderPath & "\" & fileName)
If Not externalWorkbook Is Nothing Then
externalWorkbook.Sheets(1).Rows(2).Copy
ws.Rows(1).Insert Shift:=xlDown
Application.CutCopyMode = False
externalWorkbook.Close SaveChanges:=True
End If
On Error GoTo 0
End If
' 次のファイルを処理
fileName = Dir
Loop
End Sub
コードの解説
フォルダパスを指定する:
folderPath
変数に、処理対象のフォルダのパスを指定します。この例では、現在のワークブックのフォルダパスを使用しています。
シートを設定する:
ws
変数に、処理を行うシートを設定します。ここでは、シート名が “Sheet1” のシートを使用しています。必要に応じてシート名を変更してください。
フォルダ内のファイルを処理する:
Dir
関数を使用して、指定されたフォルダ内のすべてのファイルを順に処理します。- ファイル名が “まとめ.xlsm” でない場合のみ処理を行います。
- ファイルを開いて指定されたシートの 2 行目をコピーし、ワークブックを閉じます。
使用例
- このコードを新しいモジュールに貼り付けます。
- フォルダ内に複数の Excel ファイルを作成または配置します。
- マクロを実行すると、指定されたフォルダ内のファイルに対して処理が行われます。
これで、Excel VBA を使用してフォルダ内のファイルに対して処理を行う方法がわかりました。ぜひ試してみてください! 😊