質問: excel vba ブックが本当に閉じられた時だけ別のブックを閉じたい excel vba ブックが本当に閉じられた時だけ別のブックを閉じたい a.xls b.xls と二つのブックがあります。 a.xlsが閉じられる時、b.xlsも同時に閉じたいです。 a.xlsに以下のマクロを入れました。 private?sub?workbook_beforeclose(cancel?as?boolean) ?workbooks("b.xls").close?savechanges:=false end?sub 問題はa.xlsが保存してない場合、「a.xlsへの変更を保存しますか?」というメッセー ジが 出てきますが、そこでキャンセルを押された場合でもb.xlsが閉じられてしまいます。 a.xlsが本当に閉じられた時だけb.xlsを閉じたいのですが そのようなことは可能でしょうか?
回答: イベントが無いので難しいと思います。 代替案として、自力で保存を問い合わせてみては? private sub workbook_beforeclose(cancel as boolean) dim 文書, 応答 if not thisworkbook.saved then '変更があった場合のみ問い合わせる 文書 = "'" & thisworkbook.name & "'への変更を保存しますか?" 応答 = msgbox(文章, vbexclamation + vbyesnocancel) if 応答 = vbcancel then '閉じないようにして終了 cancel = true exit sub end if if 応答 = vbyes then '自力で保存する thisworkbook.save else '保存したことにしてしまう thisworkbook.saved = true end if end if ★ここでb.xlsを閉じる end sub 面倒なので省略しましたが、読み取り専用のブックだと、saveメソッドで エラーが発生します。エラーハンドリングして回避してください。