[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Auto_CloseとWorkbook_BeforeClose』(どんまい)
他人が作った物ですが、Auto_CloseとWorkbook_BeforeCloseに両方に同じ処理が だぶっていたりするものと、本当にここで良いのか?とわかりません。 時におかしい動作をするのは、このせいかもはっきりしませんが、 どなたか整理して下さると有り難いのですが、宜しくお願い致します。 いろいろこっちか?あっちか?と動かしたのですが、どうもわかりませんので、 お聞きします。 Sub Auto_Close() On Error Resume Next Application.OnKey "^{w}" 'CTRL+Wでメニュー呼び出しを解除する。 Application.OnKey "^{q}" 'CTRL+qでメニュー呼び出しを解除する。 MyBar.Delete 'boxを閉じる。 '標準モジュールexFuncのクローズ処理 MyBar.Delete 'ツールバー削除 Call RemoveToolBar 'ファイルの変更を保存しない Workbooks(Application.ThisWorkbook.Name).Close False End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("c_db.xls").Close False Workbooks("cr_db.xls").Close False Application.OnKey "^{w}" 'CTRL+Wでメニュー呼び出しを解除する。 Application.OnKey "^{q}" 'CTRL+qでメニュー呼び出しを解除する。 '/ メニューをリセット Call MenuBars(xlWorksheet).Reset 'ツールバー削除 Call RemoveToolBar End Sub
両方記述した経験がないので試してみると、BeforeCloseイベントが先に発生しますね!! 私は、Auto_Closeは殆ど使用しない(Auto_Openは使いますが)ので、BeforeCloseイベントだけで
Thisworkbookのモジュールに
Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("c_db.xls").Close False Workbooks("cr_db.xls").Close False Application.OnKey "^{w}" 'CTRL+Wでメニュー呼び出しを解除する。 Application.OnKey "^{q}" 'CTRL+qでメニュー呼び出しを解除する。 Call MenuBars(xlWorksheet).Reset Call RemoveToolBar call MyBar.Delete 'boxを閉じる。 On Error GoTo 0 End Sub
Auto_Closeは削除
ichinose
この場合BeforeCloseイベントだけで良いと言うことですか 大変すっきりしました。ありがとうございます。 (どんまい)
いちおう念のため。 そのマクロ、個人用マクロブックやアドインに記されていると言う事はないでしょうか? その場合、「BeforeClose」は実行されずに「Auto_Close」だけ実行されるようです。 マクロが記述されているのが個人用マクロブックやアドインでない場合は無視してください。 (独覚)
>そのマクロ、個人用マクロブックやアドインに記されていると言う事はないでしょうか? >その場合、「BeforeClose」は実行されずに「Auto_Close」だけ実行されるようです。 へえ、面白いですねえ・・、Excel2002で検証してみると、 アドインの場合は、BeforeCloseもAuto_Closeも実行されました。
問題は、個人用マクロブックというやつですね!! つまり、Personal.xls という名前のブック
*これ、xlstartというフォルダにあるないは、関係ありません。名前だけが問題です。
このPersonal.Xlsと言うブック、作成時は、非表示ですよね? この状態で運用すると、Personal.xlsというブックを閉じるためには、Excel本体を閉じなければなりません。 この時、Personal.xlsにあるBeforeCloseは、発生しません。 但し、Personal.xlsを表示状態で運用し、このブック自体を閉じた場合には、BeforeCloseは発生します。 (もっともこの場合でもExcel本体の終了では、Personal.xlsのBeforeCloseは発生しません)
反対にPersonal.xlsという名前でなければ(例book.Xls)、そのブックがXlstartに配置されても、 又、ブックが非表示でもそうでなくてもBeforeCloseは、発生しました。
以上、Excel2002で簡易検証した結果ですが、皆さんも検証してみてください。
ichinose@これが間違いないところなら、私的新発見
追伸 前投稿の結果は、
Thisworkbookのモジュールに
Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "event ok" End Sub
こんなコードでテストした結果です。 ichinose
すみません、アドインでBeforeCloseが実行されないのはExcel2000の場合でした。
「[XL2000]アドインのBeforeCloseイベントがExcel終了時に実行されない」 http://support.microsoft.com/kb/414233/ja
なお、もともとの情報元は下記です。
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200908/09080024.txt
(独覚)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.