【VBAリファレンス】Wordの作業効率を劇的に変える!開いている全文書をワンクリックで閉じる魔法のVBAマクロ

スポンサーリンク

概要:なぜWordには「すべて閉じる」ボタンがないのか?

Wordで複数の文書を同時に開いて作業をしているとき、ふと「これらすべてを一度に閉じたい」と思ったことはありませんか?Excelには「Shiftキーを押しながらファイルタブをクリックする」というテクニックが存在しますが、Wordには標準機能として「開いているすべての文書をまとめて閉じる」というコマンドがメニューの表層には見当たりません。

多くのユーザーは、タスクバーから一つ一つウィンドウを選択して閉じるか、Word自体を終了させて「すべて保存しますか?」というダイアログと格闘することになります。しかし、これは非常に非効率です。実は、VBA(Visual Basic for Applications)を少し活用するだけで、この「全文書一括クローズ」を実現し、さらにキーボードショートカットを割り当てることで、作業終了時のルーチンをわずか1秒に短縮することが可能です。本稿では、ベテラン講師の視点から、この業務効率化の極意を伝授します。

詳細解説:Documentsコレクションを制御するロジック

VBAで文書を操作する場合、Wordアプリケーションが管理している「Documents」というコレクションオブジェクトに注目する必要があります。これは現在Word上で開かれているすべてのドキュメントを内包する箱のようなものです。

このコレクションに対して、「For Each…Next」というループ処理を実行し、一つ一つの文書に対して「Close」メソッドを呼び出すのが基本戦略です。しかし、ここで一つ重要な問題が発生します。「変更が加えられた文書」を閉じる際、Wordは標準で「保存しますか?」という確認ダイアログを表示します。これをそのままにしておくと、文書の数だけ確認画面が表示され、結局の手間は変わりません。

そこで、コード内で「SaveChanges」引数を指定します。これにより、保存せずに閉じるのか、あるいはすべて上書き保存して閉じるのかをプログラム側で制御できます。今回は、実務で最も要望の多い「変更がある場合は保存してから閉じる」という構成で実装を進めます。

サンプルコード:全文書一括保存・閉じるマクロ

以下のコードをWordの標準モジュールに貼り付けてください。


Sub CloseAllDocuments()
    ' 現在開いているすべての文書を保存して閉じるプロシージャ
    Dim doc As Document
    
    ' 文書が一つも開かれていない場合は終了
    If Documents.Count = 0 Then
        MsgBox "現在開いている文書はありません。", vbInformation
        Exit Sub
    End If
    
    ' 確認メッセージを表示(誤操作防止のため)
    If MsgBox("開いているすべての文書を保存して閉じますか?", vbYesNo + vbQuestion) = vbNo Then
        Exit Sub
    End If
    
    ' すべての文書をループ処理
    For Each doc In Documents
        ' 変更がある場合は保存し、閉じる
        ' wdSaveChanges: 保存して閉じる
        ' wdDoNotSaveChanges: 保存せずに閉じる
        doc.Close SaveChanges:=wdSaveChanges
    Next doc
    
    MsgBox "すべての文書を閉じました。", vbInformation
End Sub

このコードのポイントは「Documentsコレクション」を走査している点です。もし、「保存せずに強制終了したい」というニーズがある場合は、`wdSaveChanges` の部分を `wdDoNotSaveChanges` に書き換えるだけで対応可能です。

実務アドバイス:ショートカットキーへの登録と運用

マクロを作成しただけでは、まだ「効率化」の入り口に過ぎません。真の生産性向上は、このマクロを「ショートカットキー」に割り当てることで達成されます。以下の手順で設定を行ってください。

1. Wordの「ファイル」タブ > 「オプション」 > 「リボンのユーザー設定」を開きます。
2. 左下の「キーボードのユーザー設定」ボタンをクリックします。
3. 分類リストから「マクロ」を選択します。
4. マクロ一覧から「CloseAllDocuments」を選択します。
5. 「割り当てるキーを押してください」の入力ボックスに、自分が使いやすいショートカットキー(例えば Alt + Shift + C など)を入力します。
6. 「割り当て」ボタンを押して設定を完了させます。

実務においては、この「自分専用のショートカット」が武器になります。例えば、一日の終わりに複数の資料を開きっぱなしにしている状態から、キーを叩いて一瞬でデスクトップをクリーンにする。この「儀式」を定着させることで、脳の切り替えがスムーズになり、残業時間を削減する一助となります。

注意すべき点:ファイル名が未定義の場合

実務で注意が必要なのは、一度も保存していない「新規文書(Document1など)」が存在する場合です。この場合、VBAで `wdSaveChanges` を指定していても、Wordは「名前を付けて保存」ダイアログを強制的に表示します。これはWordの仕様であり、回避するにはファイル名を自動生成して保存するか、あるいは「保存しない」という選択をとる必要があります。

もし完全に自動化したいのであれば、`If doc.Path = “” Then` といった条件分岐を加え、保存されていないファイルのみを別処理するなどの工夫が必要です。しかし、まずは上記のコードで「既存のファイルを閉じる」という点から運用を始めてみてください。

まとめ:VBAで「自分だけのWord」を構築せよ

Wordというツールは、標準機能だけで使うには限界があります。しかし、今回紹介したVBAによる「文書制御」の考え方を身につければ、Wordは単なる文書作成ソフトから、あなたの業務に合わせてカスタマイズ可能な「作業プラットフォーム」へと進化します。

「すべての文書を一度に閉じる」という些細な機能一つをとっても、それを自動化することで、日々の小さなストレスが解消されます。ITスキルとは、こうした「面倒だ」と感じる瞬間を、プログラムで解決していく積み重ねに他なりません。

ぜひ今日から、あなたのWord環境にこのマクロを導入し、快適なドキュメント作成ライフを手に入れてください。VBAを使いこなす能力は、今後どのような職場環境においても、あなたの貴重な武器であり続けるはずです。

タイトルとURLをコピーしました