こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

QNo.5811406

すぐに回答ほしいです

質問者が選んだベストアンサー

イベントが無いので難しいと思います。
代替案として、自力で保存を問い合わせてみては?
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

ANo.1

このQ&Aは役に立ちましたか?

29人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問