• ベストアンサー

Excelマクロで別ブックが開くのを監視できますか

別ブックが開く時に実行するようなマクロは作成可能でしょうか。 別ブックが開く時に、特定のリンク先が含まれているかどうかを調べて、そのリンク先を変更したいのです。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

以下の様にすれば出来ます。 「macro」を実行した後から監視が開始されるので、マクロを記述してあるブックが開かれるタイミングで「macro」を実行しておきます。 実際の特定のリンク先が含まれるかどうかの記述は、クラスモジュールに記載します。 'ThisWorkbookに記述 Private Sub Workbook_Open() Call macro End Sub ’標準モジュールに記述 Dim Evt As New Class1 Sub macro() Set Evt.app = Application End Sub ’クラスモジュールに記述(クラスモジュールのオブジェクト名は「Class1」とする) Public WithEvents app As Application Private Sub app_WorkbookOpen(ByVal Wb As Workbook) ’ここにリンク先が含まれているかどうかのコードを記述します。 ’MsgBox Wb.Name End Sub

masnoske
質問者

お礼

お陰様でうまくできそうです。 WithEventsキーワード、勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロで別のブックに貼り付けたい!

    作成したシートを別のブック(既存)にマクロを使って貼り付けたい のですが、いろいろ調べた結果以下のようにはすることができました。 ---------------------------------------------------------------- Sub SaveSheet() Dim sFileName As String 'ファイル名の設定 sFileName = "C:\a\test.xls" 'シートをコピーして新規ブックを作成 Sheets(Array("Sheet1", "Sheet2")).Copy '作成したブックの保存 ActiveWorkbook.SaveAs sFileName End Sub ---------------------------------------------------------------- これはとあるサイトで見つけたもので、私自身が作成したものでは ありません。 このマクロの問題は、 ○あらたにブック(シート)が作成されること (マクロ実行時は上書きになるので、変更できなくても使えないわけ ではない) ○元データはシート丸ごとであり、セル範囲を選択できない。 ○貼り付けるシートにおいても、任意の場所を起点とできない。 ということです。 整理しますと、『作成したシートの任意のセル範囲を、別に存在する ブックに、任意のセルを起点として貼り付けたい』 ということです。 どうかよろしくお願いします。m(_ _)m

  • エクセル-別のbookで同様のマクロ実行

    エクセル-別のbookで同様のマクロ実行 最初あるBook1に入っているmacro1はそのbook1のsheet1を処理するように作成しました。 次にBook1を開いたまま、Book2を開きそのsheet1に対してmacro1と同等の機能を実行したい場合は通常どうするのでしょうか。 (1) Book2にBook1のマクロをコピー (2) book2のマクロを開き、表示されるBOOK1 macro1を実行する。 (2) 場合でもうまくいくのでしょうか。Sheet1に対してやりたいことの論理は同じとします。試してみたらといわれそうですが、まず識者の説明をお聞きしたいのです。

  • Excelマクロ が重いときと重くないときがある

    ボタンをクリックすると、 1、新しいブックを作成して、 2、ボタンのあるブック(元ブック)のデータの必要なものだけをコピペして、 3、オフセットを使用して、一定間隔で罫線を引く。 というマクロが組んであります。 その、元ブックのみが開いているときは瞬間で終わる処理が、 別ブックが開いていると、処理がとても遅くなります。 しかもその別ブックというのが、 特に元ブックとは関係のないもので、 マクロも組んでないものなんです。 また、その別ブック以外のブックは、 開いていても問題なく、早く処理してくれるのですが、 その別ブックが開いているときだけ処理が遅くなります。 マクロを実行しているファイルとまったく関係のないブックでも 開いていると、マクロの実行速度が遅くなることがあるのでしょうか。 ご存知のかた、みえましたら、 ご教授願います。

  • エクセル 別のウインドウで開きたい 

    エクセル2010 Windows7 エクセルのマクロで新規Bookを作成するコードを実行しています。 以前は、新規ブックが別ウインドウで作成されていたのが、昨日エクセルを並べて表示して作業してから、そのマクロを実行すると同じウインドウ何に作成されるようになってしまいました。 別ウインドウで開くようにするにはどうすればよいでしょうか? よろしくお願いします。

  • エクセルマクロで、別のブックが開いているかを判定したいのですが。

    いつもお世話になっております。 マクロで質問なのですが、マクロを終了する際に Application.Quit  で終了していましたが、これだとマクロ起動前に別のブックが 開いているとそのブックまで閉じてしまいます。 マクロを起動した際に、別のブックが開いているかを判定して Application.Quit か close を使い分けて終了させたいのですが、 判定する為にはどのようにすればよいのでしょうか? よろしくお願い致します。

  • アクティブなブックのマクロの実行について

    現在使用しているエクセルのブックがあり、ブック名はA(Ver1.0)とします。 このブックにApplication.Run "'A(Ver1.0).xls'!(1)"…Application.Run "'A(Ver1.0).xls'!(20)"というマクロがあります。 ブック名をマクロ実行前に必ず変更しなければならなくて、そのブック名は毎回違ったものになります。 わざわざブック名を変更せずに、現在開いているブックのマクロを実行するという風にしたいのですがどうしたらいいですか? よろしくお願いします。

  • EXCELマクロ実行のショートカットキーについて

    マクロをショートカットキー([CTRL]+[P])で実行するようにしています。 マクロは、ブック内に保存しており、このブックのみ開かれている状態 だと正常に動作するのですが、同じキーにマクロが割り当てられている別 のブックを同時に開いている場合、先に開かれたブックのマクロが実行さ れてしまいます。 アクティブなブックのマクロを実行することは可能でしょうか?

  • ブックを作成するマクロ

    エクセルで、以下のマクロを実行すると新規のブックを作成します。 Workbooks.Add この時のブック名はBook1になりますが、任意のブック名を指定するにはどうすればいいでしょうか?

  • エクセルのシートを別のブックに貼り付けたい

    エクセル2003でブックAという名前のブックを作成しました。その中にシートにはブック内へのリンクがあります。 そして そのシートを別のブックBにコピーしたいのです。 普通にコピー→貼り付け をすると ブック内へのリンクがすべてブックA内へのリンクになってしまいます。 どうしたら ブックAへのリンクを外してコピーできるのでしょうか?

  • Excelのマクロについて

    マクロの保存先を「開いているすべてのブック」にして、 A2~A32をいったん削除した後で、 1月1日から、1月31日を入力して、 最後にA2をアクティブセルにしておく、というマクロを作りました。 1/1と入力すると、普通、1月1日と表示されますよね? 同一ブック、同一シートないでしたら、そのように表示されるのですが、 同一ブック、別シートあるいは、 別ブックで、このマクロを実行すると、 2001/1/1と表示されます。 あとで、セルの表示形式を変えればいいんでしょうが、 この原因が、なぜ、そうなるのかが知りたいです。 (まだ、そのシート内以外だと、マクロが設定できない、 とかの方がわかるんですが。) また、 同一シートでなくても、 1月1日~1月31日の表示形式のままで、 設定できるマクロがあったら、あわせて教えてください。 作成しているファイルの、 バージョンは、Excel2002ですが、 マクロは、2000と変わらないと思うんですが・・・。 よろしくお願いいたします。