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のサンプルは以下のとおり。
以上、ExcelのVBAで、Excelの置換リストからWord文書の文字列を一括置換する方法の備忘録でした。