人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

wordの置換について質問です。
使用ソフトはword2007です。

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

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

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

●質問者: torii_koichi
●カテゴリ:コンピュータ
✍キーワード:Word 「a」 ひとつ ソフト ファイル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ardarim
●40ポイント

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

次のスクリプトをテキストファイルとして保存して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 文書のテキストを検索、置換する

◎質問者からの返答

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

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

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


2 ● mue
●0ポイント

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)以前であれば、使用可能と思われます。シェアウェアです。

◎質問者からの返答

使用ソフトはword2007です。

※質問に記載済みです。


3 ● airplant
●50ポイント

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/

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ