複数のWord文書に対して文字列リストを元に連続して置換するマクロ

Pocket

以前、Wordに関する次の二つのマクロを紹介しました。
Wordで文字列リストを元に連続して置換するマクロ
複数のWord文書に対して文字列置換
今般、「これらを組み合わせたい」という要望をいただきましたので、試してみました。

準備

適当なフォルダに文字列置換したいWordファイルを保存します。これを「対象フォルダ」と呼びます。
確認せずに一気に置換して上書き保存しますので、これらのファイルは必ずバックアップを取っておいてください。
利用に関しては自己責任でお願いします。

リスト

マクロ実行用のWordファイルを準備します。「対象フォルダ」とは別のフォルダに保存します。
本文に次のようなリストを書いておきます。
置換前と置換後の文字列を並べ、セミコロン(;)で区切ります。

エディター;エディタ
プリンター;プリンタ
サーバー;サーバ

コード

次のコードを使います。使い方が分からない場合は「マクロを書く方法」を参照してください。
マクロを実行するとフォルダを選ぶダイアログが出ます。「対象フォルダ」を選択してください。
選択するとフォルダ内のファイルが順に開き、リストに従って次々に置換が実行され、上書き保存されます。

Sub 複数文書連続処理_リストを元に置換()
  Dim mae(100)
  Dim ato(100)
 
  '置換用配列
  Set paras = ActiveDocument.Paragraphs
  x = 0
  For i = 1 To paras.Count
    thisline = paras(i).Range.Text
    parts = Split(thisline, ";")
    If UBound(parts) > 0 Then
      mae(x) = parts(0)
      ato(x) = Replace(parts(1), Chr(13), "")
      x = x + 1
    End If
  Next i
 
  'フォルダの選択
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "フォルダを選択"
    .AllowMultiSelect = False
    If .Show = -1 Then
      mypath = .SelectedItems(1) & "\"
    Else
      MsgBox "終了します。"
      Exit Sub
    End If
  End With
 
  'Word文書に対する処理
  myfile = Dir(mypath & "*.doc*")
  Do While myfile <> ""
    Documents.Open FileName:=mypath & myfile
    For i = 0 To x - 1
      Call 文書全体を置換(mae(i), ato(i))
    Next i
    ActiveWindow.Close SaveChanges:=wdSaveChanges
    myfile = Dir
  Loop
End Sub
Function 文書全体を置換(mae, ato)
  Set myrange = ActiveDocument.Range(Start:=0, End:=0)
  With myrange.Find
    .ClearFormatting
    .Text = mae
    With .Replacement
      .ClearFormatting
      .Text = ato
    End With
    .Execute Replace:=wdReplaceAll
  End With
End Function

[ 2020年5月22日 | カテゴリー: Word | タグ: , ]

« | »

コメント

  1. 新後閑真 より:

    ありがとうございます!
    さっそく試してみたのですが、なぜか上手くいきませんでした泣
    私の操作が問題なのかもしれないのですが、「Wordで文字列リストを元に連続して置換するマクロ、複数のWord文書に対して文字列置換」は上手く作動したのですが、、、

  2. stabucky より:

    >新後閑真さん
    チェックしたところ、コードに誤りがありました。失礼しました。
    (「mypath = .SelectedItems(1) & “\”」の部分が「mypath = .SelectedItems(1) & “”」となっていました。ブログにペーストするときに必要な部分が消えてしまいました。)
    お手数ですが、再度、試していただけると助かります。
    よろしくお願いします。

  3. 新後閑真 より:

    >stabuckyさま
    修正いただき、ありがとうございます!
    動作確認したところ、無事に置換できました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報