複数のWord文書に対して文字列置換

Pocket

フォルダを指定し、その中のWord文書に対して、文字列の置換をするマクロです。
まず置換前の文字列と置換後の文字列を入力します。
その後、フォルダを選択します。
実行されるとファイルを開き置換を行い上書き保存します。これを繰り返します。

Sub 複数文書連続処理_文字列置換()
    '置換文字列の指定
    mae = InputBox("置換前の文字列を入力してください。", "置換前")
    If mae = "" Then Exit Sub
    ato = InputBox("置換後の文字列を入力してください。", "置換後")
    If ato = "" Then Exit Sub
    'フォルダの選択
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "フォルダを選択"
        .AllowMultiSelect = False
        If .Show = -1 Then
            mypath = .SelectedItems(1) & "\"
        Else
            MsgBox "終了します。"
            Exit Sub
        End If
    End With
    '実行
    res = MsgBox(mypath & "のフォルダ内のWord文書について「" & mae & "」を「" & ato & "」に置換します。よろしいですか。", vbOKCancel)
    If res = vbCancel Then Exit Sub
    myfile = Dir(mypath & "*.doc*")
    Do While myfile <> ""
        Documents.Open FileName:=mypath & myfile
        Call 文書全体を置換(mae, ato)
        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

[ 2016年1月12日 | カテゴリー: Word | タグ: ]

« | »

コメント

  1. ramerika より:

    mypath = .SelectedItems(1) & “”

    mypath = .SelectedItems(1) & “\”
    ではないですか?

  2. stabucky より:

    ramerikaさん
    ご指摘のとおりです。修正しました。ありがとうございました。

  3. perlsky より:

    大変参考になりましのた。しかしながら、これだとヘッダ部分置換が出来ないようです。
    Function の中を以下の通りに変更したところ、ヘッダの置換もうまく行きました。
    Dim myStoryRange As Range

    For Each myStoryRange In ActiveDocument.StoryRanges
    With myStoryRange.Find
    .Text = mae
    .Replacement.Text = ato
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
    End With
    Do While Not (myStoryRange.NextStoryRange Is Nothing)
    Set myStoryRange = myStoryRange.NextStoryRange
    With myStoryRange.Find
    .Text = mae
    .Replacement.Text = ato
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
    End With
    Loop
    Next myStoryRange

  4. stabucky より:

    perlsky さん
    StoryRangesを使うのですね。ありがとうございます。

  5. 新後閑真 より:

    こんにちは。大変役に立つマクロを公開されていて、ありがとうございます。
    ご相談なのですが、業務で200ほどあるワードファイルの30~40単語を置換したいと考えています。
    こちらのマクロと以下のマクロを掛け合わせたマクロを作りたいのですが、お仕事でご相談にのっていただくことはできるのでしょうか?

    https://stabucky.com/wp/archives/2309

    突然のご連絡で申し訳ございません。

  6. stabucky より:

    >新後閑真さん
    複数のワードファイルに対して複数の置換作業を一気に行いたいということですか。
    確かに二つのマクロを組み合わせればできる気がします。
    お約束はできませんが試してみます。

  7. 新後閑真 より:

    stabucky様
    お返事ありがとうございます!
    色々と検索して、本サイトにヒットしましたが、業務改善の道が開けた気持ちです!!

  8. stabucky より:

    >新後閑真さん
    記事を書きました。試していただけると助かります。
    https://stabucky.com/wp/archives/13067

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

コメントを残す

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

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報