• ベストアンサー

エクセルの起動を知るには

サブタイトル  <ブックが開いたことを捕捉するには>、<2つめが開いたことを知るには> こんにちわ。 エクセルブックを開いた時に自動で実行するマクロに Workbook_Open や auto_open と言うのがありますが、 今、マクロのある自分のエクセル(A)を開いた状態で、 新たに2つ目のブック(B)を開いたと言うイベントを捕捉したいのです。 (『あなたは2つ目のこのブックを開きましたね』と言うメッセージを出したい) ブック(A)にどのようなマクロを施せば、 ブック(B)のオープンを知ることができるでしょうか。 教えて下さい。よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

BookAにクラスモジュールを挿入する クラスモジュールの名前はClass1とする BookAのThisWokrbookに次のように登録する Dim X As New Class1 Private Sub workbook_Open() Set X.App = Application End Sub BookAのClass1に次のように登録する Public WithEvents App As Application Private Sub App_WorkbookOpen(ByVal Wb As Workbook) If Wb.Name <> ThisWorkbook.Name Then MsgBox Wb.Name & " open" End Sub

VT250F
質問者

お礼

おかげ様で出来ました。ありがとうございます。 助かりました。

関連するQ&A

  • エクセル タスクスケジューラでマクロ自動実行

    お世話になります。 win7/エクセル2010使用です。 エクセルのThisWorkbook_openでマクロを実行するファイルAを作っています。 ※Auto_Openは記述していません。 ファイルAをタスクスケジューラに設定いたしました。 問題なくマクロが自動実行されて、目的は果たしています。 ただ、不思議な点があります。 このファイルAをダブルクリックして開いても マクロは自動実行されていきます。 このファイルAをコピーして、ファイルBを作り それをダブルクリックで開くと、 ファイルBは、ブックが開いた後に、「セキュリティーの警告」がされて マクロの自動実行ができません。 通常は、「セキュリティーの警告」を出さないために Auto_Openなどでコードを記述すると思うのですが、 なぜ、Auto_Openを記述していないファイルAが自動実行されるのかがわかりません。 タスクスケジューラの設定に何か関係はあるのでしょうか? よろしくお願いします。

  • エクセルで

    エクセル2010を使っています エクセルで作業用のブック(以下ブックA)を閉じるとき自動的に記録・参照用のブック(以下ブックB)に自動的に記録するにはどうすればいいですか Workbook_BeforeClose というイベントマクロに設定すればいいという話ですが 問題点は 追加した分だけ転記して行きたいのでどうやってそれを判断させるかです 基本的に行方向に追加していきます  あと列も全部ではなく20列だけ記録して行きたいとおもってます  説明がわかりにくくすいません

  • エクセルVBA イベントプロシージャを一時停止する方法を知りたい

    エクセルマクロのイベントプロシージャに関する質問です。 ・ブックオープン時に実行するマクロ ・ブックがアクティブになる際に実行するマクロ ・ブックが非アクティブになる際に実行するマクロ この3つがイベントプロシージャとして登録されているブックがあります。 ブックオープン時に実行するマクロが終了するまで、 残りの2個のイベントプロシージャマクロをストップさせておくような方法はないのでしょうか。 理由は、ブックオープンのマクロの中に ブック切り替えのプロセスがあって、そのブックオープンのマクロ実行中に 他の2個のマクロが走ってしまうと都合が悪いのです。

  • Auto_OpenとWorkbook_Openの違いは?

    Auto_OpenとWorkbook_Openの違いは何でしょうか? マクロから開かれた場合、Workbook_Openしか実行されないことは認識していますが、それ以外に異なる点は無いのでしょうか? Workbook_OpenやWorkbook_BeforeCloseはブックが最初に開かれたり閉じられたりすると認識していますが、最近このマクロを記述しているブックをウィンドウのバックに置いて、他のブックからこのブックにしようとするとやたら時間がかかるような気がしました。 Workbook_OpenやWorkbook_BeforeCloseを削ったら早くなったような気がしましたが、これは単なる気のせいでしょうか? よろしくお願い申し上げます。

  • Excel VBA ファイルが使用可能になれば 自動実行する仕組み

    Excel のマクロで、読み取り専用から編集状態に入ったときに 自動実行される仕組みは作れないものでしょうか? どんなシチュエーションかというと… ------------------------------------------------------------ 1.Aさんが \\Folder\File1.xls を開く 2.Bさんが \\Folder\File1.xls を開くと、読み取り専用になって開く 3.Aさんがファイルを閉じる 4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) 5.Bさん【編集】するをクリックする この、5.Bさんが編集可能になった時点で、自動で実行するマクロを記述したいんです。 エクセルを開くときに自動実行するマクロありますよね。(Auto_Open() や、WorkBook_Open() など) そういう感じで 編集可能になったら走るマクロって可能でしょうか。 理由は、このファイルを開くと同時に上書き保存してるんですが (BuiltinDocumentProperties("Last author") ←の値をとるためです) 今度また別の人が開いたとき、今はBさんが編集しているのに 最終保存者=Aさんの名前で 使用者通知がされてしまうのです。 さらに補足しますと、マクロで制御しないと 「このファイルは Aさんが使ってます。読み取り専用で開く?」が 表示された後 「キャンセル」を選択すると 異常終了してしまうので "Last author"を取得する方法しかないんです。(他にあったりして?) 理想は、  4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) の表示をさせずに マクロの制御で 「使用可能になりました。いったん閉じてから再度開き直してください」 という仕組みに出来たら最高です。 長くなりましたがよろしくお願いいたします。

  • エクセルファイルをオープンしたときの再計算について

    エクセルファイルをオープンすると自動的に再計算がされます。VBAを使って、Workbook_Open()で、再計算を止めると、当然、ブックを開いた時全てで再計算が停止してしまいます。 で、質問ですが、あるブックから他のブックを開いた時には、再計算を行なわない(あるブックにVBAを組み込んで・・(イベントは、ボタンにからめてもok!)にして、手動で他のブックを開いた時は、再計算を行なうようなことが出来るのでしょうか? VBA初心者の僕として、精一杯考えたのは、親となるブックから、他のブックを開いた時に、他のブックのWorkbook_Open()イベントが始る前にWorkbook_Open()を書き込めればできると思うのですが?そんなこと無理なのでは?って思います。どなたか?詳しい方いませんでしょうか?宜しくお願い致します。

  • EXCELのマクロの有効範囲について

    (1)EXCEL2000にてブックが2つあって、それぞれに個人用マクロブックがある場合、お互いの個人用マクロブックのマクロの実行するにはどのようにマクロの記述をすればいいですか? BOOK1 マクロA1、A2、・・・、A5 BOOK2 マクロB1、B2、・・・、B5 のとき マクロA1の中でマクロB2を実行する (2)EXCEL2000にてブックが1つあって、個人用マクロブックとPERSONAL.XLSがある場合、PERSONAL.XLSの中で個人用マクロブックのマクロの実行するにはどのようにマクロの記述をすればいいですか? PERSONAL.XLS マクロA1、A2、・・・、A5 BOOK1     マクロB1、B2、・・・、B5 のとき マクロA1の中でマクロB2を実行する

  • ExcelのMacroOptionsメソッド

    エクセルのFunctionプロシジャーにてユーザー定義関数を作成したのですが その説明を[マクロ オプション] ダイアログ ボックスにいれようとMacroOptionsメソッドにて 説明をいれました。 このメソッドの実行イベントはWorkbooks_Openイベントでいれればいいとのことですけど ユーザー定義関数をいつでも使用したいので、エクセルブック本体にマクロとして組み込む のではなくアドインマクロとして、作成した標準モジュールのあるエクセルをアドインとして xlamで保存し、アドインを参照することにより使用したいと考えています。 その際、このユーザー関数の説明をいれるためにMacroOptionsメソッドをいれたいのですが xlamのThis_WorkBookモジュールのWorkbooks_Openイベントにいれましたが、実行されず [マクロ オプション] ダイアログ ボックスに表示されません。 どのモジュールのどのイベントにいれるのでしょうか? できることならxlam内のモジュールにいれたいのですが・・・・

  • エクセル マクロで自動実行と終了について

    エクセルで作ったマクロを自動実行・自動保存・自動終了したいので、下記のような 記述のマクロをつくり、Windowsのタスク処理で1回/日実行させようとしています。 ----<ここから>------------------------------------ Sub Auto_Open()    :   :   Workbooks("ekuseru.xls").Close SaveChanges:=True End Sub ----<ここまで>------------------------------------ 質問その1  マクロを編集したい場合はどうすればいいのでしょう?  そのBookを開くとマクロが動き出し、保存した上で終了してしまいます。  マクロ無効でBookを開くと「ツール」⇒「マクロ」⇒「マクロ」で「編集」はクリッ  クできないようになってます。 質問その2  マクロが終了するとき、Bookは閉じますがエクセル自体は閉じません。  (意味通じますか?)  エクセル自体を閉じるにはマクロの記述はどうすればいいのでしょう? 以上、よろしくお願いします。

  • エクセルのマクロをファイル名で自動実行させたい

    毎度お世話になっております。 エクセル2010で不慣れなマクロを作ったのですが、これを特定の名前のファイル名のBookに一括でコピー?、実行させるような方法はないでしょうか? ファイルを開く時に、マクロが動くようにAuto_Openマクロでやっと動くようになったのですが、ファイル名が「製品名(スペース)〇〇〇」の〇〇〇の付いたエクセルBookを開くときに、このマクロが自動で動くようにする方法は無いのでしょうか? ファイル数が結構あるので、これが出来れば非常に助かるのでお知恵をお貸しくださいませ。

専門家に質問してみよう