
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を閉じたいのですが
そのようなことは可能でしょうか?
投稿日時 - 2010-04-08 13:58:32
イベントが無いので難しいと思います。
代替案として、自力で保存を問い合わせてみては?
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メソッドで
エラーが発生します。エラーハンドリングして回避してください。
投稿日時 - 2010-04-08 15:07:25
ありがとうございます。
ご提示いただいた内容でバッチリでした。
読み取り専用ブックだった場合は
「読み取り専用です。別名で保存してください。」
のメッセージを表示させて
Cancel = True
Exit Sub
で終わるようにしました。
投稿日時 - 2010-04-08 16:55:01
このQ&Aは役に立ちましたか?
7人が「このQ&Aが役に立った」と投票しています
回答(1)