- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい)
Excel VBA ブックが閉じられた時に別のブックを閉じたい
このQ&Aのポイント
- Excel VBAを使用して、A.xlsを閉じると同時にB.xlsも閉じたい場合、以下のマクロを使用することができます。しかし、A.xlsが保存されていない場合に保存メッセージが表示され、キャンセルを選択した場合でもB.xlsが閉じられてしまう問題があります。
- A.xlsが保存されていない場合に表示される保存メッセージの問題を解決する方法は、VBAコードを修正することです。具体的には、BeforeCloseイベントを使用して確認を行い、保存せずにブックを閉じることができます。
- このような方法を使用すると、A.xlsが本当に閉じられた時だけB.xlsを閉じることができます。ただし、保存せずに閉じる場合は注意が必要です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
イベントが無いので難しいと思います。 代替案として、自力で保存を問い合わせてみては? 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メソッドで エラーが発生します。エラーハンドリングして回避してください。
お礼
ありがとうございます。 ご提示いただいた内容でバッチリでした。 読み取り専用ブックだった場合は 「読み取り専用です。別名で保存してください。」 のメッセージを表示させて Cancel = True Exit Sub で終わるようにしました。