【Word VBA】表示されていない文書を閉じる

Wordマクロでは、文書を非表示で開けます。

たとえば、上書き翻訳用の一括置換ソフト「ぱらぱら」 では、Wordで置換用の辞書(用語集)を作成した場合に、辞書の内容を取得するためにWordの辞書ファイルを非表示で開きます。

ただ、何らかの理由で処理が途中で止まったりした場合、非表示のファイルがそのままWordに残されてしまうことがあります。

すると、表示されていないのに2個のファイルが開かれているという状態になってしまったりします。ファイルをすべて閉じてWordアプリケーションを閉じ たつもりなのに、実際にはWordが閉じていないというおかしな状況が生じます。私のマクロでも意図せずにそのようになってしまうことがありました。

今回の記事では、非表示で開かれているファイルのみを自動的に閉じるマクロを紹介します。

今後のアドインのアップデートで、この機能を実装していきます。

このマクロでできること

現在開かれている文書のうち非表示の文書を特定し、その文書を保存をせずに閉じます。

マクロの解説

おなじみのFor Each Next ステートメントです。5行目と10行目。

文書の表示・非表示は、6行目のActiveWindow.Visible プロパティで判定します。

マクロ

Sub 非表示の文書を閉じる()

 Dim myDoc As Document

 For Each myDoc In Documents
  If myDoc.ActiveWindow.Visible = False Then
   myDoc.Close SaveChanges:=wdDoNotSaveChanges
   DoEvents
  End If
 Next

End Sub

関連記事

上書き翻訳用の一括置換ソフト「ぱらぱら」

Word 2000 documents opened or created with the Visible:=False parameter can’t be made visible again, and/or don’t trigger a Close Event (不具合はすでに修正されています)

トップへ戻る