既にできているWord文書に対して一括して処理をしたいことがあると思います。
表紙に通し番号を入れたり、会社名や担当者名が変わったので置換したり、という場面です。
そのためのマクロを考えてみました。
コード
Sub 複数文書連続処理()
Dim files(100)
'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
mypath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
'ファイルの取得
files(1) = Dir(mypath)
i = 1
Do While files(i) <> ""
i = i + 1
files(i) = Dir()
Loop
'処理
i = 1
Do While files(i) <> ""
Documents.Open FileName:=mypath & files(i)
'実際の処理
Selection.TypeText Text:="test"
ActiveWindow.Close SaveChanges:=wdSaveChanges
i = i + 1
Loop
End Sub
Dim files(100)
'フォルダの選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダを選択"
.AllowMultiSelect = False
If .Show = -1 Then
mypath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
'ファイルの取得
files(1) = Dir(mypath)
i = 1
Do While files(i) <> ""
i = i + 1
files(i) = Dir()
Loop
'処理
i = 1
Do While files(i) <> ""
Documents.Open FileName:=mypath & files(i)
'実際の処理
Selection.TypeText Text:="test"
ActiveWindow.Close SaveChanges:=wdSaveChanges
i = i + 1
Loop
End Sub
説明
3つのパートに分かれています。
1番目は、フォルダを選択する部分です。
処理を施したいファイルを、あるフォルダに入れておきます。マクロを実行するとフォルダを選択するダイアログが出ます。
2番目は、ファイルを取得する部分です。
該当するファイル名を配列変数に取り込みます。
3番目は、実際に処理する部分です。
ファイルを開き、処理を施し、上書き保存をして閉じる、という流れをファイルの数だけ繰り返します。
サンプルでは、ファイルを開いた最初の部分に「test」という文字列を挿入する処理を書きました。
「Selection.TypeText Text:=”test”」
この部分をアレンジすればいろいろな処理ができると思います。
コメント
[…] これをマクロで実行する方法を考えました。 複数のWord文書に連続して処理を施すマクロに応用することもできます。 […]
はじめまして。
複数のWord文書に連続して処理を施すマクロを探していたところここにあたりました。ためしに上記マクロをコピペして使ってみましたが、ループ1のダイアログは開きましたが、wordの文書がフォルダに存在するのにword文書を認識せず、読み取ることができません。word2002を使ってきますが、問題あるでしょうか。また、ループ3で別のマクロをよんで、処理することはできますでしょうか。
@chanko
ご利用ありがとうございます。
エラーは出ませんか。エラーメッセージがあれば何か分かるかもしれません。エラーがなければ、ダイアログのところでフォルダが正しく選択されていないのかもしれません。
3番目の部分に他のマクロを呼んで処理することは可能です。
エラーメッセージですが、何も出ません。wordの文書が存在するフォルダを開いても、何のファイルも表示されません。
プロジェクトエクスプローラで表示されているNormal-標準モジュール-Module1に上記のマクロを貼り付けて使用しています。使い方に何か問題があるのでしょうか。
stabuckyさん、以前の回答はわざわざありがとうございました。
私はフォルダの中のファイルを選択しようとしてフォルダを 開けてしまいましたが、フォルダを選択して「ok」ボタンを押してみると無事に上記のマクロは作動しました。
3番目のループに別のマクロを入れて動かすこともできそうです。
ご提供されたマクロは決して長いものではありませんが、このマクロのおかげで大変私は助けられます。
ありがとうございました。
@chanko
動きましたか。良かったです。
フォルダ選択のところは確かに分かりにくいので、選択されていない場合には確認メッセージを出すようにした方が実用的かもしれません。
はじめまして、私も感謝申し上げます。
複数ファイルの2ページ目を全て消したくてこのマクロを利用させていただきました。
本当に楽になりました。すばらしいマクロです。
有難うございました。
ご利用ありがとうございます。
お役に立てて嬉しいです。
はじめまして
複数のワードファイルを処理したくプログラムを探してたどりつきました。試行しましたら、エラー5174で「ファイルが見つかりません」が表示されます。Documents.Open FileName:=mypath & files(i)に強調マークがつきます。自宅のPCでは、問題なく動作します。ご教示頂ければ助かります。
環境はwindows7 word2010です。
ibahiroさん
ご利用ありがとうございます。
色々、調べてみましたが、分かりませんでした。
申し訳ありません。
[…] これをマクロで実行する方法を考えました。 複数のWord文書に連続して処理を施すマクロに応用することもできます。 […]
9行目
mypath = .SelectedItems(1) & “”
ここが
mypath = .SelectedItems(1) & “\”
という感じで \ が抜けている気がします
村田さん
ありがとうございました。修正しました。