- ベストアンサー
シフトキーを押してもマクロは実行されてしまう
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > 下のバーからエクセルの「最近使ったもの」から該当のファイルを開くと > シフトキーを押しながらそのファイルを起動しても > Workbook_Openイベントが起動してしまいます。 まず、イメージとしては、 「シフトキーを押しながら」 と言うよりも、 「ブックがデザインモードで開かれるのを確認できるまで(ぐらい)は Shiftキーを押しっぱなしにする」 という表現の方が近いです。 今一度、手順を確認されてみては如何でしょう? 「シフトキーを押しながら」ブックを開いても、 Shiftキーを離すのが早過ぎれば、 デザインモードでは開かれずに、Workbook_Openイベントが実行されます。 また、逆に、 Shiftキーを押さずに普通にブックを(Excelと共に)開く操作をしてから、 直後(コンマ数秒後)にShiftキーを押し、離さずにそのまま待った場合にも、 ブックはデザインモードで開かれて、Workbook_Openイベントが実行されない、 ことも(コンマ数秒の度合いによっては)あります。 つまり、Shiftキーを押し続けるべきタイミングは、 Excelアプリケーションが開いた後の、 ブックを開く時にある、 ということです。 win8.1環境では試せませんが、Win7 xl2010 では、 タスクバーのポップアップ エクスプローラー デスクトップ(以上はExcelが開いていない場合) Excelメニューの[最近使用したブック](この場合は「シフトキーを押しながら」のみ) いずれの場合でも、 ブックはデザインモードで開かれて、Workbook_Openイベントが実行されないこと を確認しています。 単純に環境因である可能性については、こちらからは何とも言えませんが、 過去の質問例を思い出してみると、指を離すのが早過ぎたケースが実際にありましたので、 ひとつの可能性の話としての暫定解答です。 Excelアプリケーションの起動に要する時間にはムラがありますから、 そのつもりがなくても、 Excelアプリケーションの起動が終りブックを開き始めるよりも前に、 Shiftキーを離してしまっている可能性について、 確認した上で、もしその可能性を排除出来るのならば、 それはそれで解決に向けて重要な情報になると思います。 手順を確認した上で、うまく行かない場合は、その旨補足して貰えれば、 同等の環境で動作確認できる方からの情報にも期待できるのでは、と。 私からは以上です。
その他の回答 (1)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
No.1です。追記します。 > しかしエクセルのアプリケーションを開き という説明より前に書かれたものは、 Excelアプリケーションが開かれていない場合、の事 を説明しているという理解でいますが、 一応、もしかして、 Excelアプリケーションが開いている状態から、 タスクバーのポップアップからブック(ファイル)を選んで、 Shiftキーを押下げたまま開く場合、 という意味で仰っているのでしたら、 その場合は確かに、デザインモードでブックを開くことは出来ません。 Shiftキーが効かない設定(仕様)のようです。 ご指摘のようにExcelメニューの[最近使用したブック]から実現出来ますが、 代替え手段が用意されている、という理由だけで設計時に開発対象から外れたもの、とか? (もしかしたら私が知らないだけで何か方法あるのかも、ですが、、、。) Excelアプリケーションが開かれていない状態でも Excelアプリケーションが開いている状態でも 同じ様なコントロールが表示されるので、 動作仕様が統一されていないように感じることについては 少しばかり違和感がありますけれども。 蛇足ですが一応、vba的には、 Application.EnableEvents = False Workbooks.Open Filename:="フォルダ名\ファイル名.xlsm" Application.EnableEvents = True とか、AutoMacroの Auto_Open プロジージャの実行をキャンセルするだけなら (Workbook_Open プロジージャは実行されますが) Workbooks.Open Filename:="フォルダ名\ファイル名.xlsm", Editable:=False とか、一応の手段は用意されています。 以上、No.1で書き漏れていた補足的な内容、 Excelアプリケーションが開いている状態からの動作 についてでした。
お礼
ありがとうございました。
お礼
ありがとうございました。