複数Excelブックの複数シートにおけるテキスト置換をマクロで自動化する方法

Visual Basic

Excelマクロを使用して、複数のブックとシートにあるオブジェクトのテキストを一括で任意の文字に置換する方法を解説します。特に、同じフォルダ内にあるすべてのExcelブックを対象にしてテキストを一気に変更する手順に焦点を当てています。

1. Excelマクロで複数のブックを操作する準備

最初に、複数のExcelブックを操作するための準備として、VBAでフォルダ内のExcelファイルを読み込むコードを作成します。以下のようなコードを使って、指定したフォルダ内にあるすべてのExcelファイルを取得できます。

Dim folderPath As String
folderPath = "C:\path\to\folder\"
Dim fileName As String
fileName = Dir(folderPath & "*.xls*")
Do While fileName <> ""
    Workbooks.Open folderPath & fileName
    ' ここで処理を追加
    Workbooks(fileName).Close SaveChanges:=True
    fileName = Dir
Loop

このコードでフォルダ内のExcelファイルを順に開き、処理を加えていくことができます。

2. 複数シートのテキストを置換する方法

次に、各ブック内の複数シートに含まれるテキストを任意の文字列に置換する方法を説明します。ここでは、Replace関数を使って、シート内の特定のテキストを置き換えます。

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
    ws.Cells.Replace What:="置換前のテキスト", Replacement:="置換後のテキスト", LookAt:=xlPart
Next ws

このコードはアクティブなワークブック内のすべてのシートを繰り返し処理し、指定されたテキストを置換します。

3. ファイルを保存して閉じる

処理が終了した後、変更したExcelファイルを保存し、閉じる必要があります。以下のコードで保存と閉じる処理を追加します。

Workbooks(fileName).Close SaveChanges:=True

これにより、変更を加えた後にファイルを保存して閉じることができます。

4. 完成したマクロの例

すべてのコードを組み合わせて、複数のExcelブックにわたってテキストを一括で置換するマクロが完成します。以下がその例です。

Sub ReplaceTextInAllBooks()
    Dim folderPath As String
    folderPath = "C:\path\to\folder\"
    Dim fileName As String
    fileName = Dir(folderPath & "*.xls*")
    Do While fileName <> ""
        Workbooks.Open folderPath & fileName
        Dim ws As Worksheet
        For Each ws In ActiveWorkbook.Sheets
            ws.Cells.Replace What:="置換前のテキスト", Replacement:="置換後のテキスト", LookAt:=xlPart
        Next ws
        Workbooks(fileName).Close SaveChanges:=True
        fileName = Dir
    Loop
End Sub

5. まとめ

このマクロを使うことで、複数のExcelファイルの複数シートにあるテキストを一括で置換することができます。Excel VBAで自動化を行うことで、手動での作業を大幅に省力化できます。フォルダ内のすべてのファイルに適用できるため、大量のファイルを扱う際にも便利です。

コメント

タイトルとURLをコピーしました