【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.
シート名や列番号が正しいか確認してください。