【VBA】開いている全ブックを配列を使って高速に置換する方法
日々の業務で大量のデータ処理を行う際、同じ作業を繰り返すことは時間と労力を浪費します。特に複数のワークブックに対して同一の文字列置換が必要な場合、手動での作業は非常に非効率的です。この記事では、VBAを使用して開いている全てのワークブックに対して高速に文字列を置換する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub ReplaceTextInAllWorkbooks()
Dim wb As Workbook, ws As Worksheet
Dim arrBooks() As Variant
Dim i As Long, lastRow As Long
Dim searchText As String, replacementText As String
' 置換対象の文字列を指定
searchText = "旧文字列"
replacementText = "新文字列"
' 開いている全てのワークブックを配列に格納
ReDim arrBooks(1 To Application.Workbooks.Count)
For i = 1 To UBound(arrBooks)
Set arrBooks(i) = Workbooks(i)
Next i
' シートごとの置換処理
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each wb In arrBooks
For Each ws In wb.Sheets
With ws.UsedRange
.Value = Replace(.Value, searchText, replacementText)
End With
Next ws
Next wb
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。