[[20150724135610]] 『疑問』(???) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『疑問』(???)

Workbook_Open()とAuto_Open()どちらを使う方が良いのですか?
理由はあるのですか?、それとも好みの問題かなあー

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 ブックが、マクロによって開かれる場合、Auto_Openは実行されません。
 Workbook_Openは、操作でひらかれてもマクロで開かれても実行されます。
 Workbook_Open のほうは、オブジェクトモジュールに書かれ、マクロからのイベント制御が可能です。
 マクロから開いても実行されると書きましたが、開く側で、開く前に イベント発生を抑止してやれば
 実行をとめることもできます。

 Auto_Openは古き良き(?)昭和、Workbook_Openは比較的新しい平成?。
 まぁ、好みといえば好みですかね。βは、基本、Workbook_Openしか使いません。

 Workbook_OPen Auto_Open といれて検索すると、この学校内の

http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040817.html

 も含めてたくさんヒットしますから、参考にしてお好きなほうを。

(β) 2015/07/24(金) 14:30


コメントありがとうございます。
長い歴史があるのですねえー、私も若い平成を使って行きます。
疑問が解消できました。
(???) 2015/07/24(金) 14:59

ニックネームは、他の名前を使用していただくと助かります。
(私は質問したことがないもので、間違われたくないのです)

私は古風な方なので、いつもAuto_Openの方を使っていますね。
(???) 2015/07/24(金) 18:05


 私がVBAの掲示板に参加し始めの頃、Auto_OpenとWorkbook_BeforeCloseという組合せを推奨している
 カリスマ回答者がいました。

 プログラム構造としては、歪なので質問したところ(質問というより、反論だったかも知れません)、
 要約すると以下のような回答投稿を返されました。

 Auto_Closeではなく、Workbook_BeforeCloseの選択に関しては、

 Workbook_BeforeCloseは、イベント内でクローズを中止することが出来る(Cancel=True)が、Auto_Closeはできない

 Workbook_Openではなく、Auto_Openの選択に関しては、
 ・Workbook_Openには、バグある
 ・Auto_Openだと

 sub auto_open(optional flg as long=0)
    if flg=0 then 
       msgbox "単独では作動しません"
    else
       '通常処理
    end if
 end sub

 こんな使い方ができる という理由から、この組合せを使っているという趣旨の投稿がありました。

 当時は、この投稿に結構納得して、この時からしばらくは、私は Auto_Open派だと言い張っていたと思います。

 「Workbook_Openにはバグある」このバグには、残念なことに今まで一度も遭遇したことがありません。

[[20111108174017]]

 今にして思えば↑これがそうだったのかな と思います(このスレッドでは、Auto_Openだったか
 Workbook_Openだったか不明と記述していますが、Workbook_Openでした)が、定かではありません。

 カリスマ回答者に「どんなバグですか?」と、どうして聞かなかったのかなあ?
 告白することなく通り過ぎて行ったあの子を思う思いです(なんのこっちゃ)!!

 その後、このバグは Excel97の時にあったバグという話題も目にした記憶があります。
 だとしたら、Excel2000からのVBAの私には、わからない話ですが。

 Excel2002からは、原則、Workbook_Open、Workbook_BeforeCloseで統一しています。

 が、Auto_Open(Optional flg as long=0)
 このような使い方があることを覚えておくと、 何かに役に立つことがあるかもしれませんので、歴史的な経緯を調べることも意味があると思います。

(ichinose@暑いですねえ) 2015/07/26(日) 16:36


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.