「ワード マクロ すべてのファイル保存」
「ワード マクロ すべてのファイル一括保存」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
すべてのファイルを保存するWord マクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
この手のマクロは、どこに保存するか、名前をどうするかを気にすると、考えるべきことが増えます。
まずは、すべてのファイルを、上書き保存するマクロをご紹介します。
ループ処理で全ファイルを上書き保存するサンプルマクロ
マクロ・プログラミングの経験がある方が思いつくのは以下のようなマクロでしょう。
Dim doc As Document
On Error Resume Next
For Each doc In Documents
doc.Save
Next doc
開いているすべての文書ファイルに対してループを回して、
For Each doc In Documents
上書き保存をしています。
doc.Save
一度も保存されていない新規文書があったときに、エラーになってしまうのを避けるために、
On Error Resume Next
としています。
ループ処理を使わずに全ファイルを上書き保存するサンプルマクロ
念のために、WordのVBE(Visual Basic Editor)でオブジェクトブラウザーを表示して「Save」を検索してみると、DocmentsコレクションオブジェクトにもSaveというメソッドが存在していることに気づきました。
以下のようなマクロでも、開いているファイルを上書き保存できるようです。
Documents.Save NoPrompt:=True
End Subこのマクロの場合、一度も保存されていない新規文書は無視され、一度でも保存されているファイルが上書き保存されます。
Document.Saveメソッドのヘルプの間違い
この記事を書くために、上記の
DocumentオブジェクトのSaveメソッドと
DocumentsコレクションオブジェクトのSaveメソッドの
ヘルプを読んでいたら、
DocumentオブジェクトのSaveメソッドのヘルプに、間違いがあることに気づきました。
Document.SaveメソッドのヘルプではNoPromptとOriginalFormatといういずれも省略可能な引数を指定できることになっています。
しかし、オブジェクトブラウザーでDocumentオブジェクトのSaveメソッドを確認すると、下図のように引数は取らないことになっています。
オブジェクトブラウザーで、DocumentsコレクションオブジェクトのSaveメソッドのほうを確認すると、こちらは下図のように、NoPromptとOriginalFormatといういずれも省略可能な引数を指定できるようになっています。
DocumentオブジェクトのSaveメソッドのヘルプは、DocumentsコレクションオブジェクトのSaveメソッドのヘルプをコピーして、修正を入れ忘れたのではないかと想像しています。
最終更新日時:2022-08-05 03:28
Home » ワードマクロ・Word VBAの使い方 » Documentオブジェクト » 全ファイルを上書き保存するWordマクロ