複数のWord文書に対して文字列置換
フォルダを指定し、その中のWord文書に対して、文字列の置換をするマクロです。
まず置換前の文字列と置換後の文字列を入力します。
その後、フォルダを選択します。
実行されるとファイルを開き置換を行い上書き保存します。これを繰り返します。
'置換文字列の指定
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 | タグ: VBA ]
« NAGAHAMAらーめん 相模原店 | クレジットカード番号をチェックする »
コメント
-
大変参考になりましのた。しかしながら、これだとヘッダ部分置換が出来ないようです。
Function の中を以下の通りに変更したところ、ヘッダの置換もうまく行きました。
Dim myStoryRange As RangeFor 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 -
こんにちは。大変役に立つマクロを公開されていて、ありがとうございます。
ご相談なのですが、業務で200ほどあるワードファイルの30~40単語を置換したいと考えています。
こちらのマクロと以下のマクロを掛け合わせたマクロを作りたいのですが、お仕事でご相談にのっていただくことはできるのでしょうか?https://stabucky.com/wp/archives/2309
突然のご連絡で申し訳ございません。
-
stabucky様
お返事ありがとうございます!
色々と検索して、本サイトにヒットしましたが、業務改善の道が開けた気持ちです!! -
[…] Wordで文字列リストを元に連続して置換するマクロ 複数のWord文書に対して文字列置換 […]
-
実行すると
Call 文書全体を置換(mae, ato)
の場所で、VBAエラー424 「オブジェクトが必要です」というエラーが発生しました。
解決策を教えて下さい。 -
貴重なサンプルプログラムありがとうございます。
ループで複数回処理する場合、エラーがでてしまします。(二週目)
ここの部分→Documents.Open FileName:=Txt_FileFol_Mae & myfile
・オートメーションエラーです。リモートプロシージャーコールに失敗しました
もしくは
・リモートザーバーがないか使用できる状態ではありません
調べてみたのですが、改善策がわかりませんでした。ご教授いただけましたらと思います。
宜しくお願い致します。 -
[…] 複数のWord文書に対して文字列… […]
-
公用文書の読点には「,」(コンマ)ではなく「、」(テン)を用いることが原則となったようです。何か簡単な方法はないかなと探したところ、こちらのサイトを見つけました。当方のサイトでも紹介させていただきます。
mypath = .SelectedItems(1) & “”
↓
mypath = .SelectedItems(1) & “\”
ではないですか?