• 締切済み

xltから開いたファイルのマクロを実行したい

"a.xls"のマクロから"b.xlt"のファイルを開くと"b1"(拡張子無し)の ファイルが開きますよね。 "b.xlt"にはauto_openのマクロが入っているのですが、この開き方では、 auto_openが実行されません。 そこで "Application.Run "b!auto_open" としてみても "Application.Run "b.xls!auto_open"としてみても、auto_openは実行されません。 一度保存しないと、xltから開いたファイルのマクロを走らせる事は不可能でしょうか?

みんなの回答

回答No.3

こんにちは。 ブックの名前や保存の有無に係りなく、 workbook オブジェクトとして捉えることさえ出来れば、 workbook.RunAutoMacros メソッドが使えます。 ' ' ///   With Workbooks.Add(Template:="C:\Users\ユーザー名\AppData\Roaming\Microsoft\Templates\テンプレートブック名.xlt")     .RunAutoMacros Which:=xlAutoOpen   End With ' ' /// #2様、ご指摘のように、テンプレートブックの Workbook_Open イベントを用いれば、workbooks.Add するだけで、 実行させることは可能ですが、 タイミングとして、Workbook_Open の後にCallされる Auto_Open でなければ、 ならない処理も中にはありますので、.RunAutoMacros メソッドの方が、 汎用性が高いのかも知れません。 どちらを簡素・簡易と感じるかは個人差があると思いますが、 .RunAutoMacros メソッドなら余計な心配しなくて済むのかなぁ、と。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

auto_openは他のファイルから開かれた場合には実行されません ThisWorkbookに Private Sub Workbook_Open() End Sub としてそこに必要なコードを記載して下さい。

  • angel2015
  • ベストアンサー率21% (126/590)
回答No.1

auto_openで実行する必然性がないですね 最初に起動したマクロで全部やってしまってはどうでしょうか

関連するQ&A