ファビコン。井の家紋。VBAでエクセルからバッチファイルを作成する | エクセルマクロ(VBA)実践蔵(じっせんぐら)

前の項目 - VBAから外部アプリのEdgeやChromeをSendKeysやSendMessage、keybd_eventで操作するマクロ

VBAでエクセルからバッチファイルを作成する最終更新日:2024-09-13

VBAを使用してExcelの表からバッチファイルを作る

VBAを使用して、バッチファイルを作成せずに、コマンドプロンプトを起動して、コマンドを実行することももちろん可能なのですが、この記事では、敢えてバッチファイルを作成して、実行したいと思います。

バッチファイルの利点は、お互いが影響しないような命令であれば、複数のバッチファイルを同時に実行させることができます。時間のかかる処理であれば、バッチファイルを複数起動させてコマンドを実行した方が、早く完了させることもできます。

また、VBの記述方法に慣れていなければ、VBAコード内にコマンドを埋め込むと、修正時にコンパイルエラーが出てしまったり、VBAの書き方に問題があるのか、コマンドの入力方法に問題があるのかを切り分けることも必要になってきます。

上記より、エクセルのシートに入力されたコマンドを入力情報として、バッチファイルを作成することを考えていきたいと思います。バッチファイルの実行は、ダブルクリックによる手動の予定です。

エクセルで作成する利点は、コマンドのパラメータの種類や意味をメモしておけるので便利です。

エクセルの見た目

バッチファイル作成の起動画面(前半)

まずは、前半部分の画像になります。一番上に「batファイルを保存するフォルダパス」を設定します。セルI2をダブルクリックするとフォルダ選択ダイアログが表示させるため、そのダイアログからフォルダを選択すると、セルB2にパスが入力されます。

マクロの中で上記フォルダに「Batch」フォルダを作成し、バッチファイルはその中に作成されます。ファイル名は、作成した日付と連番になります。(例)Bat20240913_01.bat 連番の番号は、同一フォルダ内でファイル名が被らないように降っています。

セルB2にパスが入力されている状態で、セルI2をダブルクリックすると、フォルダ選択ダイアログの起動初期フォルダは、セルB2に入力されているパスになります。

その下の、4行目~11行目は、任意の設定になります。必要に応じて、入力します。

セルB5、B6、B7には、名称を記入し、C5、C6、C7には、ファイルパスを入力します。絶対パスでも、相対パスでも構いません。あらかじめ、セルB5,B6,B7には、File1,File2,File3と入れていますが、変更可能です。例えば、InputFileやOutFile、ExeFile等に変更可能です。コマンドプロンプトからコマンドを実行する場合に、別のファイルに対して同じコマンドを打つことも多いと思うので、C5,C6,C7を変更することで、コマンドラインを修正することなくバッチファイルが作成できるようにしてみました。

セルB9、B10、B11も上記と同様です。バッチファイル作成時に、セルB5,B6,B7,B9,B10,B11に記述されている文字列と一致する文字列を見つけたら、隣C列のパスやファイル名に置き換えてバッチファイルを作成します。置き換える際の一致・不一致条件は、正規表現にて、単語検索をしています。前後がスペース又は行頭、行末の場合に、一致する場合の置換処理を実行しています。例えば、B5セルの文字列「File1」と一致していても「\File1\」は、不一致扱いになります。

つづいて、後半部分の画像になります。

バッチファイル作成の起動画面(後半)

上記のコマンド(16行目~18行目)は、参考例として記入しています。

batファイルを実行する目的として、実行そのものが目的な場合と、得られる情報(ログ)が目的な場合があると思うので、その2パターンを分けられるようにしています。15行目にあるログをテキストに出力「する」か「しない」かをセルH15で選択できるようにしています。実行することで目的が達成される場合には、「しない」を選択してください。マクロにて、バッチファイルの末尾にPauseコマンドを追加しているので、正常に実行されたか問題があったかの確認は可能です。

ログファイルを残す場合は、セルH15は「する」の状態で、batファイルの作成ボタンを押してください。ログを出力する場合、実行したフォルダやコマンドもログファイルに残るように記述しています。ログファイルの格納先は、バッチファイルと同一のフォルダになります。ログファイルの名前もバッチファイルの名前と同様に、日付と連番が入ります。(例:log20240913_01.txt) バッチファイル作成時の日付と連番の番号がログファイルにも使用されます。

「batファイルの作成」ボタンで、バッチファイルが作成され、メモ帳が開きます。問題なければ、×でメモ帳は閉じてください。作成完了の合図のために、メモ帳を立ち上げていますが、保存済みファイルです。

batを作成後に隣の「フォルダを開く」ボタンを押すとエクスプローラが開くため、作成されたbatファイルをダブルクリックすることで、実行できます。

このエクセルシートは、このファイル内で、シートを複製して使用することも可能です。コマンドが異なるバッチファイルは、シートを複製して利用してください。

VBAを使用してExcelの表からバッチファイルを作るツールのダウンロード

Windows PCにインストールされているExcelで起動してください。

下記からダウンロードしたエクセルファイルを起動し、コンテンツの有効化を行う。

マクロの有効化手順については、こちらも参考にしてください。

バッチファイル作成ツールのエクセルマクロ有効ブック(xlsm)のダウンロード

前の項目 - VBAから外部アプリのEdgeやChromeをSendKeysやSendMessage、keybd_eventで操作するマクロ