Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » 開いているWordファイルをすべて閉じるExcelマクロ

開いているWordファイルをすべて閉じるExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excelvba 開いているwordファィルを閉じる」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

詳細な状況はわかりませんが、開いているWordファイルをExcel VBA(Visual Basic for Applications)から閉じるには、どのようなコードを書けばいいのかを探している方による検索です。

参考になりそうなマクロを2つご紹介しておきます。

[スポンサードリンク]

開いているWordファイルを閉じるExcelのサンプルマクロ

以下のようなマクロで、開いているWordファイルをすべて閉じることができます。

Sub 開いているWordファイルを閉じる()

 Dim wd_app As Object ' Word.Application
 Dim i As Long

 On Error GoTo ERR_HNDL

 Set wd_app = GetObject(Class:="Word.Application")
 With wd_app.Documents
  For i = .Count To 1 Step -1
   .Item(i).Close
  Next i
 End With
 GoTo END_TASK

ERR_HNDL:
 MsgBox "Wordファイルが開かれていません。"
 GoTo END_TASK

END_TASK:
 Set wd_app = Nothing

End Sub

GetObject関数の引数・Classに「Word.Application」を指定することで、開いているWordへの参照を取得して、
 Set wd_app = GetObject(Class:="Word.Application")

開いているWordファイルに対して「Step -1」でFor~Nextループを回して、
 With wd_app.Documents
  For i = .Count To 1 Step -1

順番に閉じています。
   .Item(i).Close

Wordが起動していないときに、
 Set wd_app = GetObject(Class:="Word.Application")
を実行するとエラーとなってしまうため、
  On Error GoTo ERR_HNDL
 ERR_HNDL:
  MsgBox "Wordファイルが開かれていません。"
というエラートラップを入れています。

ループ処理をせずに開いているWordファイルを閉じるExcelのサンプルマクロ

Wordのオブジェクトモデルに馴染みのない方には、上記のマクロが理解しやすいと思いますが、実はループ処理を行わなくても、開いているWordファイルをすべて閉じることもできます。

Sub 開いているWordファイルを閉じる_ループなし()

 Dim wd_app As Object ' Word.Application

 On Error GoTo ERR_HNDL

 Set wd_app = GetObject(Class:="Word.Application")
 wd_app.Documents.Close
 GoTo END_TASK

ERR_HNDL:
 MsgBox "Wordファイルが開かれていません。"
 GoTo END_TASK

END_TASK:
 Set wd_app = Nothing

End Sub

Wordの開いている全文書を表すDocumentsコレクションオブジェクトにもCloseメソッドが存在するのです。

WordのDocuments.CloseメソッドをExcel VBAから実行しているのが上記のマクロです。

GetObject関数を使うところや、エラートラップについては先のFor~Nextループを使うマクロと同じです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » 開いているWordファイルをすべて閉じるExcelマクロ

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.