wordの置換について質問です。

使用ソフトはword2007です。

フォルダ内のWordファイル内にある文字列「A」を「B」に一括置換する方法を教えてください。

通常の検索・置換だと、ファイルをひとつひとつ開いてから、検索・置換を行わなければならず、フォルダ内にある全てのwordファイルを一括して検索・置換できれば便利だなと思った次第です。

マクロ、フリーソフトなど複数ファイルを一発で検索・置換できるワザがあれば教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/19 16:06:17
  • 終了:2007/07/20 09:01:21

回答(3件)

id:ardarim No.1

ardarim回答回数892ベストアンサー獲得回数1422007/07/20 00:44:13

ポイント40pt

スクリプトを使うと一括でできます。

次のスクリプトをテキストファイルとして保存してreplace.vbs等適当な名前を付けます。

Const wdReplaceAll = 2 

Set objWord = CreateObject("Word.Application") 
objWord.Visible = False

Set fs = CreateObject("Scripting.FileSystemObject")

Set objFolder = fs.GetFolder("c:\test")

For Each objFile in objFolder.Files
    If Right(LCase(objFile.Name), 4) = ".doc" Then
        Set objDoc = objWord.Documents.Open(objFolder.Path & "\" & objFile.Name) 
        Set objSelection = objWord.Selection 
        objSelection.Find.Text = "A"
        objSelection.Find.Forward = True
        objSelection.Find.MatchWholeWord = True
        objSelection.Find.Replacement.Text = "B"
        If objSelection.Find.Execute( ,,,,,,,,,,wdReplaceAll) Then
            objDoc.Save
        End If
        objDoc.Close
    End If
Next

objWord.Quit

"C:\test"は任意のフォルダ名に、

"A"、"B"は置き換えたい文字列に変更してください。


出来上がったファイルをダブルクリックすると、スクリプトが実行されて一括変換が行われます。


参考:

Microsoft Word 文書のテキストを検索、置換する

id:torii_koichi

スクリプトを記載いただいて大変助かります。

いただいたスクリプトを試してみます!

ありがとうございました!

2007/07/20 08:58:16
id:mue No.2

mue回答回数240ベストアンサー獲得回数62007/07/20 00:48:08

http://www.geocities.jp/nakashima_tsutomu/soft/docMake/docMake.h...

御使用のWordが、Word2000であれば、使用可能と思われます。フリーソフトです。

http://www13.ocn.ne.jp/~maronet/software/rpls/rpls.html

御使用のWordが、Word2002(XP)であれば、使用可能と思われます。シェアウェアです。

http://www.alpha-net.ne.jp/users2/phylum/soft/officegrep/index.h...

御使用のWordが、Word2002(XP)以前であれば、使用可能と思われます。シェアウェアです。

id:torii_koichi

使用ソフトはword2007です。

※質問に記載済みです。

2007/07/20 08:58:56
id:airplant No.3

airplant回答回数220ベストアンサー獲得回数492007/07/20 03:29:09

ポイント50pt

WSHというWindows標準のスクリプトでできます。

下記をコピー&ペーストして「xxx.vbs」という名前で保存し、ダブルクリックして動かしてみてください。

フォルダ名を入れるボックスが出てくるので、フォルダ名を入れれば一括変換されます。

残念ながら、フォルダ名はエクスプローラのアドレスバーから手動でコピー&ペーストしてください。

AAAAAを検索してBBBBBに変えます。


なお、フォルダ内の一括変換もいいのですが、選択したファイルを全部一括変換のほうが使い出があると思います。

#1のところを全部コメントにして(先頭に'をつける)、#2のところを生かせば(先頭の'#2を外す)仕様が変わって、「xxx.vbs」へドラッグしたファイルを一括変換します。

'#1 フォルダ全部のファイルでやる場合
'#2 指定したファイルだけやる場合

Const wdReplaceAll = 2

strDir = InputBox("ディレクトリ名を入力してください。")         '#1
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") '#1
Set objFolder = objFSO.GetFolder(strDir)                        '#1

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

For Each objFile In objFolder.Files                             '#1
    If Lcase(Right(objFile.Name, 4)) = ".doc" Then              '#1
        strArg = objFile.Path                                   '#1

'#2 For Each strArg In WScript.Arguments

        Set objDoc = objWord.Documents.Open(strArg)
        Set objSelection = objWord.Selection

        objSelection.Find.ClearFormatting
        objSelection.Find.Replacement.ClearFormatting
        With objSelection.Find
            .Text = "AAAAAA"
            .Replacement.Text = "BBBBBB"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = False
            .MatchFuzzy = True
        End With
        objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll
                                  'Replace:=wdReplaceAll
        objDoc.Save
        objWord.Documents.Close
        Set objDoc = Nothing
        Set objSelection = Nothing

    End if  '#1
Next
objWord.Quit

頻繁に使うときは、検索文字と置換文字をInputBox関数で読み込むように変えて、Forの外側へ移せば入力ボックスが出てきます。

http://www.google.co.jp/

id:torii_koichi

>選択したファイルを全部一括変換のほうが使い出があると思います。

確かにそうかもしれませんね。便利な使い方とスクリプトを教えていただきありがとうございました。早速試してみます!

2007/07/20 08:59:48

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません