ruby-robotの夢

cygwin-ruby,qgisの達人を目指す奮闘記

ワード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