Excel VBA: フォルダ内のファイルに対して処理を行う方法

 


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



コードの解説

  1. フォルダパスを指定する:

    • folderPath 変数に、処理対象のフォルダのパスを指定します。この例では、現在のワークブックのフォルダパスを使用しています。
  2. シートを設定する:

    • ws 変数に、処理を行うシートを設定します。ここでは、シート名が “Sheet1” のシートを使用しています。必要に応じてシート名を変更してください。
  3. フォルダ内のファイルを処理する:

    • Dir 関数を使用して、指定されたフォルダ内のすべてのファイルを順に処理します。
    • ファイル名が “まとめ.xlsm” でない場合のみ処理を行います。
    • ファイルを開いて指定されたシートの 2 行目をコピーし、ワークブックを閉じます。

使用例

  1. このコードを新しいモジュールに貼り付けます。
  2. フォルダ内に複数の Excel ファイルを作成または配置します。
  3. マクロを実行すると、指定されたフォルダ内のファイルに対して処理が行われます。

 これで、Excel VBA を使用してフォルダ内のファイルに対して処理を行う方法がわかりました。ぜひ試してみてください! 😊