[[20231120121500]] 『ExcelVBAのWorkbook_Openイベントを実行しないよax(匿名) ページの最後に飛ぶ

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

 

『ExcelVBAのWorkbook_Openイベントを実行しないようにしたい』(匿名)

【環境】
Windows10 64ビット
Microsoft365 

【内容】
ExcelVBAのWorkbook_Openイベントプロシージャに書いたVBAを
Excelを開くときに実行して欲しい時と、実行して欲しくない時があります。
(VBAを修正したい時など)

この時、PC1とPC2で違う作業をしなければならない状況です。
PC1とPC2は、どちらもWindows10の64ビット、
ExcelはMicrosoft365を使用していています。

PC1は、Shiftキーを押しながら、エクスプローラー上のファイルをダブルクリックすると、
Workbook_Openイベントは実行されません。
PC2は、上記と同じ作業をしても、Workbook_Openイベントが実行されてしまいます。

現在は、PC2はExcelを起動して、ファイル開く→参照→該当ファイルのディレクトリへ移動
→Shiftキーを押しながら、該当ファイルをクリックとすると、
Workbook_Openイベントが実行されなくなるので、手数は増えますが、この対応でやっています。

出来れば、PC2をPC1と同じ作業でできるようにしたいです。

どなたかご存じの方おられましたら、ご教授下さいます様、
よろしくお願いいたします。

Excelではなく、Windowsの機能だとしたら、掲示板の趣旨から外れてしまうので、
スレ違いである事を指摘して頂けるとありがたいです。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 Sub test()
     Application.EnableEvents = False
 End Sub
 といったプロシージャを実行してから、そのファイルを開くと、イベントを感知しないようにできます。

(xyz) 2023/11/20(月) 12:38:46


ご回答ありがとうございます。

質問の仕方が悪かったです。

教えていただいたコードは、ググった時に出てきたので、
テストプログラムを作って実行してみました。
そのコードを実行すると、
Application.EnableEvents = True
も実行することになる事も理解できました。

しかし、マクロを使用しているファイルは多数あり、
Application.EnableEventsプロパティでコントロールするのは、
ちょっと手間がかかるかなと思っています。

とあるxlsmファイルのWorkbook_Openにあるコードを、
修正するときだけ、一時的にWorkbook_Openイベントだけを実行せずに
ファイルを開きたいのです。

同じWindows10、Microsoft365なのに、
Shift押しながらエクスプローラ上でファイルをダブルクリックした時に、
Workbook_Openイベントが実行されないときと、
実行されてしまうことがあるのは、
なぜなんだろうと思って調べてはいるのですが、
なかなか見つけられなかったので、質問させていただきました。

どなたか、Shift押しながらエクスプローラ上でファイルをダブルクリックした時に、
Workbook_Openイベントが実行されないときと、実行されるときの違いについて、
ご存じの方おられましたら、ご享受していただけるとありがたいです。

よろしくお願いいたします。

(匿名) 2023/11/20(月) 14:00:25


 私の環境での実験結果ですが、Explore上で Excelブックを Shift+ダブルクリックで開く場合
 ・Excel Applicationが既に起動している → Workbook_Openイベント が実行される
 ・Excel Applicationが起動しておらず、最初のExcel Applicationである → Workbook_Openイベントが実行されない
 ようですね。
(´・ω・`) 2023/11/20(月) 14:20:06

 オープンイベントプロシージャが動作しないように開くには、
 下記のようにすればよいということなんですけど。
 Sub test()
    Application.EnableEvents = False
    該当のブックを開く  'この場合、Workbook_Openは動作しないで開きます。
    Application.EnableEvents = True
 End Sub
 ということなんですが通じなかったですか。

 Shift押しながらのオープンについては、ご指摘のとおりかと思います。

 ただし、Application.StartupPath フォルダにブックや個人用マクロブックなどがあると、
 そちらが先に開かれるので、Shiftキーを押しながらDBLクリックでブックを開いても、
 Openイベントは発生するんじゃないかなと思います。(Win10,Excel2019で確認しました)

 それらを回避するには上記のようなマクロで開くのが確実かと思い回答しました。

(xyz) 2023/11/20(月) 15:24:02


>オープンイベントプロシージャが動作しないように開くには、
> 下記のようにすればよいということなんですけど。
> Sub test()
> Application.EnableEvents = False
> 該当のブックを開く 'この場合、Workbook_Openは動作しないで開きます。
> Application.EnableEvents = True
> End Sub
> ということなんですが通じなかったですか。
> Shift押しながらのオープンについては、ご指摘のとおりかと思います。

xyz様
度々のご回答ありがとうございます。

私の説明下手ですみません。

上記のコードは動作検証すみの上で、
Workbook_Openを実行しないショートカットキーのようなものがあればと思っています。

例えば、「A.xlsm」というファイルがあり、
Workbook_OpenイベントにVBAのコードがあります。

しかし、現在は、「A.xlsm」ファイルは、エンドユーザの使用方法や、
詳細の使用を決めるためのテストプログラムで、
何度もVBAコードの編集が必要な状況となっています。

もちろん、標準モジュールとかに書いておき、
ボタンでWorkbook_Openイベントを実行させることもできますが、
なにせ、エンドユーザから「開くときに絶対動け」と言われていて、
実証実験を見せて、「後で開くときに動くように直します。」
といっても聞いてもらえない状況なのです(泣)。

したがって、「A.xlsm」のコードを編集するときだけ、
Workbook_Openイベントを発生させないで簡単に開きたかったのです。

私が製作しているのは「A.xlsm」だけではなく、
他に複数のExcelVBA案件を抱えているので、
例えば、教えて頂いたコードをメッセージボックスなどで、
TrueとFalseを切り替えるような、
「chgEvents.xlsm」のようなものを作っても、
「A.xlsm」を編集するときはFalseに切り替え、その他の「.xlsm」や「.xlsa」などを、編集するたびに実行する羽目になってしまいます。

> ・Excel Applicationが既に起動している → Workbook_Openイベント が実行される
> ・Excel Applicationが起動しておらず、最初のExcel Applicationである → Workbook_Openイベントが実行されない

´・ω・`様
ご回答ありがとうございます。

´・ω・`様の環境では、最初に質問した、PC2と同じ状況ということですね。
ということは、Shift+ダブルクリックでは、Workbook_Openイベントは、
実行されるのが標準そうですね。大変参考になりました。
本当に助かります。ありがとうございます。

これは私のやり方が悪いのかもしれませんが、
エンドユーザごとにフォルダを分けて、
目的ごとにもフォルダ分けしながら製作しているので、
エクスプローラからファイルを開く習慣があり、
どうにかして、Shift+ダブルクリックで開くみたいな簡単な方法があれば知りたくて質問いたしました。
(Excelの設定をいじるなど…現在も探しているのですが…)

ただ、どうしても納得いかないのが、
PC1もPC2もどちらも「Windows10 Microsoft365」
の環境であるにもかかわらず、
PC1では、Shift+ダブルクリックでWorkbook_Openイベントは実行されないのに、
PC2では、Shift+ダブルクリックでWorkbook_Openイベントは実行されてしまう。
ということなのです。

(匿名) 2023/11/20(月) 16:37:27


 環境依存の問題は再現しない状況では検証しようがないので...

 以下のようなVBScriptを作っておいて、このスクリプトのアイコンに
 Excelブックをドラッグ&ドロップすると、
 Application.EnableEvents=False
 の状態で開きます。 

 '------ Excelを開く.vbs ここから ------ 
 Sub Main()
   If Wscript.Arguments.Count = 0 Then Exit Sub
   Dim xlApp
   On Error Resume Next
      Set xlApp = GetObject(,"Excel.Application")
      If Err Then Set xlApp = CreateObject("Excel.Application")
   On Error Goto 0
   xlApp.Visible = True
   xlApp.EnableEvents=False
   For Each Arg in Wscript.Arguments
       xlApp.WorkBooks.Open(Arg)
   Next
   xlApp.EnableEvents = True
 End Sub

 Call Main()
 '------ Excelを開く.vbs ここまで ------ 
(´・ω・`) 2023/11/20(月) 16:53:26

 ちょっと気になったので、
 >´・ω・`様の環境では、最初に質問した、PC2と同じ状況ということですね。
 違います。

 環境ではなくて、状況(Excelが起動しているかどうか)に依存します
 と、読み取れてますか?
(´・ω・`) 2023/11/20(月) 17:39:57

度々のご回答、本当に感謝です。
ありがとうございます。

>環境ではなくて、状況(Excelが起動しているかどうか)に依存します

ではなぜ、PC1ではExcelが起動していない状態でもShift+ファイルダブルクリックで
Workbook_Openイベントが発生しないように立ち上がるのに、
PC2では、同じExcelが起動していない状況で、同じように、
Shift+ファイルダブルクリックしてもWorkbook_Openイベントが発生してしまうのでしょうか?

(匿名) 2023/11/20(月) 20:49:43


 > PC1は、Shiftキーを押しながら、エクスプローラー上のファイルをダブルクリックすると、
 > Workbook_Openイベントは実行されません。
 > PC2は、上記と同じ作業をしても、Workbook_Openイベントが実行されてしまいます。

 エクスプローラーから開くときは、シフトを押そうが押すまいが、動作は変わりません。
 https://love-guava.com/open-excel-book-without-running-macro/
 を参照。
 PC2が想定される動作です。PC1の動作を再度確認してください。

 > Excelを起動して、ファイル開く→参照→該当ファイルのディレクトリへ移動
 > →Shiftキーを押しながら、該当ファイルをクリックとする、
 これが正しい方法です。

(助言) 2023/11/20(月) 23:07:58


助言様
ご回答ありがとうございます。

>PC2が想定される動作です。PC1の動作を再度確認してください。
何度やっても、PC1はShift+エクスプローラのファイルダブルクリックで、
Workbook_Openイベントは発生しないで、ファイルを開くことができます。
私としてはこちらの方が使いやすいのですが…

しかし、記載していただいたサイトを見ても、
色々調べて別の複数のサイトを見ても

Excelを起動して、ファイル開く→参照→該当ファイルのディレクトリへ移動
→Shiftキーを押しながら、該当ファイルをクリックとする

という方法しかのっていませんでした。
やはり、こちらの操作が基本なのでしょう。

しかしコンピュータの特性から考えると、
何か理由があるとは思うのですが(泣)

たくさんの方にご回答して頂き、本当に感謝です。

(匿名) 2023/11/20(月) 23:35:06


 どーもちぐはくですね...

 xyzさん 2023/11/20(月) 15:24:02 の
 > ただし、Application.StartupPath フォルダにブックや個人用マクロブックなどがあると、
 >そちらが先に開かれるので、Shiftキーを押しながらDBLクリックでブックを開いても、
 >Openイベントは発生するんじゃないかなと思います。(Win10,Excel2019で確認しました)

 はちゃんと確認したんですか?
 Excel での起動フォルダの使用方法
https://learn.microsoft.com/ja-jp/office/troubleshoot/excel/use-startup-folders

 PC2の以下のフォルダにExcelのブックがない状態でやってみましたか
 C:\Program Files\Microsoft Office\<Office1x>\Xlstart
 C:\Documents and Settings\<User_name>\Application Data\Microsoft\Excel\XLSTART
(´・ω・`) 2023/11/21(火) 09:14:29

> C:\Program Files\Microsoft Office\<Office1x>\Xlstart
> C:\Documents and Settings\<User_name>\Application Data\Microsoft\Excel\XLSTART

大変申し訳ございません。
上記2ヵ所は確認したのですが…

このヒントを頂きた時に、環境によって確認する場所が違う
という事に気づくべきでした。

C:\Users\<User_name>\AppData\Roaming\Microsoft\Excel\

PC1の上記のフォルダ内を確認してたところ、複数のファイルがありました。
そこで、フォルダを空にして、A.xslmをShift+ダブルクリックで実行したところ、
PC2と同様の現象になりました。

私の力不足、説明力不足で、多くの方を混乱させてしまい、
本当に申し訳ございませんでした。

皆様にご協力して頂き、解決出来ました。
本当にありがとうございました。

(匿名) 2023/11/22(水) 12:33:06


コメント返信:

[ 一覧(最新更新順) ]


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