1

最初に、なぜ私がこの質問をしているのかを説明させてください。そうすれば、Application.runコマンド以上のものが必要であることが明確になります。誰かが他の手段で問題を解決する方法を持っているなら、それも良いでしょう。

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

しかし、コードを実行すると、元のファイルにはないが新しいファイルにはあるシート名で多くのエラーが発生します。だから、Activeworkbookどういうわけか変更と私は理由がわかりません。コードを実行するActiveworkbookと、を新しいファイルに変更しました。

新しくファイルからマクロを実行し、これらのマクロが新しく作成されたブックでのみ機能し、元のワークブックでは機能しないことを確認することで、これを解決したいと考えていました。問題は、元のブックと新しいブックのマクロが同じであるということです。モジュールをコピーしました。

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

前もって感謝します

4

1 に答える 1

1

以下はあなたがしなければならないことを示していると思います。

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

「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」には、モジュールに次のコードが含まれています。

Option Explicit
Sub DupMac(Param As Long)

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

End Sub

「TryDup1.xls」を開いてCtrlDup()を実行すると、次のようにイミディエイトウィンドウに出力されます。

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

したがって、マクロCtrlDup()は、どちらのバージョンのマクロDupMac()も実行できます。

于 2012-04-13T21:43:05.880 に答える