📘 Excel逆引き事典

【VBA】開いている全ブックを確認メッセージを出さずに置換する方法

手作業で大量のデータを置換するのは時間がかかりますし、ミスも起こりやすいです。この記事では、開いている全てのExcelブックに対して特定の文字列を自動的に置換する方法について説明します。確認メッセージが出ないように設定することで、効率よく業務を進めることができます。

サンプルコード

VBA
Option Explicit
Sub ReplaceTextInAllOpenBooks()
    Dim wb As Workbook
    Application.ScreenUpdating = False '画面更新を停止
    Application.DisplayAlerts = False '警告メッセージを表示しない
    For Each wb In Workbooks
        If Not wb.Name = ThisWorkbook.Name Then '現在のワークブックは対象外とする
            Call ReplaceTextInBook(wb)
        End If
    Next wb
    Application.ScreenUpdating = True '画面更新を再開
    Application.DisplayAlerts = True '警告メッセージを表示するように戻す
End Sub

Sub ReplaceTextInBook(ByVal wb As Workbook)
    Dim ws As Worksheet
    For Each ws In wb.Sheets
        Call ReplaceText(ws, "旧文字列", "新文字列")
    Next ws
End Sub

Sub ReplaceText(ByRef ws As Worksheet, ByVal oldText As String, ByVal newText As String)
    With ws.UsedRange '使用されている範囲に対して置換を行う
        .Replace What:=oldText, Replacement:=newText, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
    End With
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。