「excelvba 開いているwordファィルを閉じる」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
詳細な状況はわかりませんが、開いているWordファイルをExcel VBA(Visual Basic for Applications)から閉じるには、どのようなコードを書けばいいのかを探している方による検索です。
参考になりそうなマクロを2つご紹介しておきます。
開いているWordファイルを閉じるExcelのサンプルマクロ
以下のようなマクロで、開いている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
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ファイルをすべて閉じることもできます。
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
Wordの開いている全文書を表すDocumentsコレクションオブジェクトにもCloseメソッドが存在するのです。
WordのDocuments.CloseメソッドをExcel VBAから実行しているのが上記のマクロです。
GetObject関数を使うところや、エラートラップについては先のFor~Nextループを使うマクロと同じです。
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » 開いているWordファイルをすべて閉じるExcelマクロ