| 
    
     |  | ▼mimi さん: こんばんは。
 
 >
 >実際に書いたコードは、
 >Application.Run "'" & Path & "'!sheet" & idx & ".macro1"
 >(PathにはC:\〜\aaa.xmlというフルパスが格納されています)
 >と、書きました。
 >
 >1枚目から順に3枚目までのシートでループを回して処理させました。
 >結果としましては、macro1は動作しておりませんでした。
 ははっ、標準モジュールにあるのなら動きませんね!!
 では、例題仕様です。
 
 まず、標準モジュールにMacro1というプロシジャーが存在しているブックの
 名前を callsample.xls としましょう。
 
 Macro1の内容は、
 '=========================================================
 Sub Macro1()
 MsgBox ActiveSheet.Name
 End Sub
 アクティブシート名を表示するコード
 このブックcallsample.xlsには、
 Sheet1、Sheet2、Sheet3というシート名が付けられたシートがあります。
 
 この中のSheet2とSheet3には、「フォーム」ツールバーのボタンを配置します。
 このボタンには、Macro1が関連付けされています。
 
 
 次に呼び出しを行うブック、これを「calltest.xls」という名前を付けましょう。
 二つのブックは、同じフォルダ内に保存して下さい。
 
 では、calltest.xlsの標準モジュールのコードです。
 直接呼び出すのではなくOpenメソッドで対象ブックを開きました。
 
 '===============================================================
 Sub main()
 Dim opnbk As Workbook
 Dim sht As Worksheet
 Dim btn As Button
 Set opnbk = Workbooks.Open(ThisWorkbook.Path & "\callsample.xls")
 '↑対象ブックを開く
 For Each sht In opnbk.Worksheets
 sht.Activate
 For Each btn In sht.Buttons
 Application.Run btn.OnAction
 Next
 Next
 End Sub
 
 こんなコードで実行してみて下さい。
 ボタンがあるシートだけMacro1が実行されます。
 つまり、上の例の場合、ボタンのあるシートのシート名が表示されます。
 上記の内容のブックを新規に作成して試してみてください。
 
 
 >
 
 |  |