【VBA】他のブックのマクロを実行する

VBAから
 ・他のブックのマクロを実行
できます!

PR

VBAコード(呼び出される用のマクロ)

呼び出される用のマクロを作成します。

ここでは例として、
 ・デスクトップ配下のExcelファイル「sampl_001.xlsm」に
 ・プロシージャ「sample()」を作成
します。

呼び出される用のマクロを作成するExcelファイル
呼び出される用のマクロを作成するExcelファイル
「sampl_001.xlsm」のプロシージャ「sample()」
Sub sample()
    'メッセージ出力
    MsgBox ("sampl_001.xlsmのマクロを実行しました!")
End Sub
PR

VBAコード(呼び出す用のマクロ)

呼び出す用のマクロを作成します。

ここでは例として、
 ・Excelファイル「Call_Excel_Macro.xlsm」に
 ・上記で作成したマクロを実行するプロシージャ「callExcelMacro()」を作成
します。

呼び出す用のマクロを作成するExcelファイル
呼び出す用のマクロを作成するExcelファイル
Option Explicit

Sub callExcelMacro()

    Dim excelFileFullPath As String
    Dim macroName As String
    Dim wk As Workbook
    
    '「呼び出される用のExcelファイル」のフルパスを指定
    excelFileFullPath = "C:\Users\user\Desktop\sampl_001.xlsm"
    '呼び出される用のマクロ名(プロシージャ名)を指定
    macroName = "sample"
    
    '「呼び出される用のExcelファイル」を開く
    '・「リンクの更新する/しない」のメッセージを非表示
    '・「読み取り専用を推奨する/しない」のメッセージを非表示
    '・読み取り専用で開く
    Set wk = Workbooks.Open(Filename:=excelFileFullPath, UpdateLinks:=0, IgnoreReadOnlyRecommended:=True, ReadOnly:=True)
    
    '呼び出される用のマクロ(プロシージャ)を実行
    Run "'" & excelFileFullPath & "'!'" & macroName & "'"
    
    'Excelファイルを保存せずに閉じる
    wk.Close SaveChanges:=False
    
End Sub

「呼び出される用のExcelファイル」の安全に開くために
 ・「リンクの更新する/しない」のメッセージを非表示
 ・読み取り専用を推奨する/しない」のメッセージを非表示
 ・読み取り専用
で開きます(18行目)。
※メッセージが表示されることで処理が停止してしまうことを防止します。

「Run」メソッドにより、他のブック(呼び出される用のExcelファイル)のマクロを実行します(21行目)。
※実行する「Excelファイル名」と「マクロ名(プロシージャ名)」の間に「!」を記載します。

上記の「Run」メソッドの実態は、「Application」オブジェクトの「Run」メソッド です。

「Application」オブジェクトの「Run」メソッドは、省略した記述が可能です。
※上記は省略しています。
※正式な記述方法は「Application.Run」です。

PR

実行結果

他のブックのマクロを実行できました。

呼び出される用のマクロが実行された
「呼び出される用のExcelファイル」のマクロが実行された
PR

参考①

上記のVBAコードで使用した以下の詳細については、公式サイトをご確認ください。

●「Applicationオブジェクト」の「Run」メソッド

PR

参考②

VBScriptからブックのマクロ(プロシージャ)を実行することもできます。

詳細は以下の以下の記事をご確認ください。

PR

参考③

Power Shellからブックのマクロ(プロシージャ)を実行することもできます。

詳細は以下の以下の記事をご確認ください。

タイトルとURLをコピーしました