【ExcelVBA】Excelのマクロからバッチファイルを実行するには

この記事では、Excelのマクロからバッチファイルを実行する方法についてご説明します。

【動画】Excelのマクロからバッチファイルを実行する実際の動き

Excelのマクロからバッチファイルを実行する実際の動きは次のツイートをご覧ください。

ツイート内の動画では、Excelのマクロからバッチファイルを呼び出しています。

ちなみに、バッチファイルはテキストファイルを出力しています。

Excelのマクロからバッチファイルを実行する方法

Excelのマクロからバッチファイルを実行するには、shell関数を使います。

shell関数を実行する際、引数にバッチファイル名を指定します。

パラメータに指定されたバッチファイルをshell関数が呼び出して実行します。

MEMO
shell 関数とは、外部プログラムを実行する関数です。
実行したい外部プログラムを引数に指定して実行します。
注意
shell 関数は非同期で実行されます。
非同期とは、呼び出したプログラムの終了をExcelのマクロ側が待たずに後続処理を行ってしまう状態のことです。
同期の状態でバッチファイルを実行する場合は、Runメソッドを使います。

  1. shell関数:非同期で実行
  2. Runメソッド:同期で実行

非同期・同期、およびRunメソッドについては次のページで解説していますので、そちらをご覧ください。
【ExcelVBA】Excelのマクロから引数をバッチファイルに渡して実行するには

コードの例

    '変数・定数(ここから)***************************************************
    'shell関数の戻り値格納用変数
    Dim dProcessId As Integer
    
    'バッチファイルの格納先
    Const batfilePath As String = "C:\work\"
    
    'バッチファイルの名前
    Const batfileName As String = "pg1.bat"
    '変数・定数(ここまで)***************************************************
    
    'shell関数でバッチファイルを実行する
    dProcessId = Shell(batfilePath & batfileName)

コードの解説

まずは13行目を見てください。

13行目でshell関数を使ってバッチファイルを呼び出しています。

shell関数を実行する際、実行したいバッチファイルをフルパスで引数に指定します。

コードでは、6行目で変数batfilePathに格納された実行したいバッチファイル名(フルパス)を、shell関数の引数に指定しています。

※shell関数は戻り値を返すので、変数dProcessIdに値を格納しています。後続処理で必要に応じて使用します。

最後に

本記事ではExcelのマクロからバッチファイルを実行する方法についてご説明しました。

shell関数に実行したいバッチファイルをパラメータに指定するだけなので、特に難しいことはありません。

(ツイートの)動画を参考に、Excelのマクロからどうやってバッチファイルを実行するのか、vbaからのバッチ実行のイメージを持っていただけたら幸いです。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら