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

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

PR

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

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

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

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

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

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

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

呼び出す用のマクロ(VBA)を作成するExcelファイル
呼び出す用のマクロ(VBA)を作成する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行目)。
※メッセージが表示されることで処理が停止してしまうことを防止します。
※「Workbooksオブジェクト」の「Open」メソッドで開きます。

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

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

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

PR

実行結果

他のブックのマクロ(VBA)を実行できました。
※「呼び出す用のExcelファイルのマクロ(VBA)」から、「呼び出される用のExcelファイルのマクロ(VBA)」を実行できました。

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

参考①

バッチファイルからブックのマクロ(VBA)を実行することもできます。

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

PR

参考②

VBScriptからブックのマクロ(VBA)を実行することもできます。

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

PR

参考③

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

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

PR

参考④

タスクスケジューラからマクロ(VBA)を自動実行することもできます。

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

PR

参考⑤

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

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


●「Workbooksオブジェクト」の「Open」メソッド