2012-04-13 12 views
1

まず、この質問に私がApplication.runコマンド以上のものが必要であることを尋ねている理由を説明しましょう。誰かが他の方法で問題を解決する方法を持っているなら、それも良いでしょう。別のワークブックから同じマクロを実行する

新しいプログラムであるマクロとコードを使って新しいExcelファイルを作成するプログラムを作成しました。元のファイルを変更したくないので、私はこれを行いました。元のファイルは、新規に作成されたすべてのファイルのテンプレートです。

私のコードを実行すると、元のファイルではなく新しいファイルにあるシート名でエラーが発生します。だから、何らかの形でActiveworkbookが変更され、私はその理由を知らない。コードを実行すると、Activeworkbookが新しいファイルに変更されました。

私は、新しく作成したファイルからマクロを実行し、これらのマクロが新しく作成されたワークブックでのみ動作し、オリジナルのワークブックでは動作しないようにすることで、この問題を解決したいと考えていました。問題は、元のワークブックと新しいワークブックのマクロが同一であるため、モジュールをコピーしたことです。

私の質問:VBA-Excelの別のブックから同じ名前のマクロを実行する方法はありますか。このマクロは自分自身のブックからマクロにのみアクセスすることが重要です!

ありがとうございます。

+0

Jort、使用しているコードを共有してください。 –

答えて

1

私はあなたがする必要があることを示していると思います。

「TryDup1.xls」と「TryDup2.xls」という2つのワークブックを作成しました。

"TryDup1.xlsは、" モジュールで次のコードを含む:

開く "TryDup1.xls":

Option Explicit 
    Sub CtrlDup() 

    Dim PathCrnt As String 
    Dim WBookOrig As Workbook 
    Dim WBookOther As Workbook 

    Call DupMac(1) 

    Set WBookOrig = ActiveWorkbook 
    PathCrnt = ActiveWorkbook.Path & "\" 

    Set WBookOther = Workbooks.Open(PathCrnt & "TryDup2.xls") 

    Call Application.Run("TryDup1.xls!DupMac", 2) 

    Call Application.Run("TryDup2.xls!DupMac", 3) 

    WBookOther.Close SaveChanges:=False 

    Call DupMac(4) 

End Sub 
Sub DupMac(Param As Long) 

    Debug.Print "TryDup1's DupMac: Param=" & Param 

End Sub 

"TryDup2.xlsは、" モジュールで次のコードを含みますCtrlDup()を実行すると、次のものがイミディエイトウィンドウに出力されます。

TryDup1's DupMac: Param=1 
TryDup1's DupMac: Param=2 
TryDup2's DupMac: Param=3 
TryDup1's DupMac: Param=4 

SoマクロCtrlDup )は、いずれかのバージョンのマクロDupMac()を実行できます。

関連する問題