ExcelのVBAで、置換リストからWord文書の文字列を一括置換する方法の備忘録。
前回のWordのVBAを使用した「Word文書の文字列をExcelの置換リストで一括置換する方法」と同様のことをExcelのVBAで実施するサンプルを作成してみました。
置換リストの内容に応じてVBAの内容も変更したいなど、Excelファイルの単位でVBAを管理できるメリットもあります。
内容:
「Excelの置換リストでWord文書の文字列を一括置換」のVBAサンプル
サンプルは次のとおり。
Sub 置換リストでWord文書の文字列を一括置換()
Dim wrd As Object
Set wrd = CreateObject("Word.Application")
Dim 置換リスト As Variant
Dim 最終行 As Long
Dim 行 As Long
Dim ファイル名 As Variant
'置換リストを2次元配列に変換'
With Sheets("置換リスト")
最終行 = .Cells(Rows.Count, 1).End(xlUp).Row
置換リスト = .Range(.Cells(1, 1), .Cells(最終行, 2)).Value
End With
'置換対象のWordファイルの取得'
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "置換対象のWordファイルを選択"
.Filters.Clear
.Filters.Add "Wordファイル", "*.docx"
If .Show = -1 Then
ファイル名 = .SelectedItems(1)
.Filters.Clear
Else
.Filters.Clear
Exit Sub
End If
End With
Set wrd = wrd.Documents.Open(ファイル名)
wrd.Application.Visible = True
wrd.TrackRevisions = True '確認用で変更履歴をオン'
'置換リストで一括置換'
With wrd.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchFuzzy = False
.MatchWildcards = False
.MatchCase = True
.MatchByte = True
For 行 = 2 To UBound(置換リスト)
.Text = 置換リスト(行, 1)
.Replacement.Text = 置換リスト(行, 2)
.Execute Replace:=2
Next 行
.ClearFormatting
.Replacement.ClearFormatting
End With
End Sub
補足と参考情報
なお、「Execute Replace:=2」としている箇所は、全て置換のwdReplaceAllの値 2としている。理由は、【Word VBA】Excelシートの最終行取得(xlUpで実行時エラー 424の対応)と同様のエラー対応。
上記のVBAは、Wordの変更履歴をオンにしているので、一括置換でも問題は少ないと思うが、都度確認しながら置換するVBAのサンプルは以下のとおり。
サンプルファイル
上記の記事のサンプルファイルを「note」で販売しています。
24時間以内であれば、返金申請が可能ですので、上記の手順で不明な場合や、実際に動作しているファイルを確認したい場合などにご利用ください。
以上、ExcelのVBAで、Excelの置換リストからWord文書の文字列を一括置換する方法の備忘録でした。