複数のWORDを一括置換
複数のWord文書に対して文字列置換こちらのサイトのマクロを使ってみた
WORDにマクロとして登録したら動いた
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
VBS版もこちらで紹介されていた。WORDをドロップすると置換してくれるらしい。
' 置き換え対象文字列。 strSrc→strDst へ一括置換します。
strDst = "aaaaaa"
strSrc = "bbbbbb"
' 引数の配列をargsに獲得する
Set args = Wscript.Arguments
' ワードを起動する
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
' args のファイル名たちを順番に FileName へ入れて全ファイル分ループする
For Each FileName in args
' フルパスを元にファイルを開く
Set objDoc = objWord.Documents.Open( FileName )
Set objSelection = objWord.Selection
' 検索文字列をサーチ
objSelection.Find.Text = strSrc
objSelection.Find.Forward = TRUE
objSelection.Find.MatchWholeWord = TRUE
' 発見したら置換
objSelection.Find.Replacement.Text = strDst
objSelection.Find.Execute ,,,,,,,,,,2
' 終わったら同じフルパスに対して上書き保存
objDoc.SaveAs FileName
' ファイルを閉じる
objDoc.Close
' 各種オブジェクトの解放
Set objSelection = Nothing
Set objDoc = Nothing
Next
' ワードを終了する
objWord.Quit
Set objWord = Nothing
Set args = Nothing
コメント
コメントを投稿