ワードVBAでテーブル一括置換
ワードでテーブルで一括で置換をやりたい。
python,rubyなら簡単に書けるが、VBAでやるのはかったるいもの。
どこに置換テーブルを入れるか? excelだよな~。
するとこんな感じかな。
Sub subst_by_dic() ' 選択範囲の文字列を、指定ブック-シート-列の置換辞書により一括置換(Substitute)する Dim dat(100, 2) As Variant '############ Setting dbook = "〇〇.xlsx" dsheet = 1 '1origin colstr = "a,b" '############ Setting cls = Split(colstr, ",") '置換テーブルの入力 With CreateObject("Excel.Application") .Visible = True With .Workbooks.Open(dbook) With .worksheets(dsheet) jnd = 0 For i = 2 To 100 If .Range(cls(0) & i).Text = "" Or jend = 1 Then jend = 1 Else For j = 0 To 1 col = cls(j) dat(i - 2, j) = .Range(col & i).Value Next ni = i - 2 End If Next End With .Close SaveChanges:=False End With .Quit '<###### BreakPointをセットするとよい。 End With '置換実行 For i = 0 To ni src = dat(i, 0) dst = dat(i, 1) Set aselect = Selection.Range '検索対象見つからないとき、セレクトがキャンセルされるため With Selection .Find.ClearFormatting .Find.Replacement.ClearFormatting With .Find .Text = src .Replacement.Text = dst .Forward = True .Wrap = False 'wdFindContinue .Format = False .MatchCase = True '大文字小文字区別する .MatchWholeWord = False .MatchByte = True '全半角区別する .CorrectHangulEndings = False .HanjaPhoneticHangul = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False 'ワイルドカード .MatchFuzzy = False 'あいまい End With .Find.Execute Replace:=wdReplaceAll End With aselect.Select Next End Sub