【エクセル】VBAで実行ファイル(EXEファイル)を実行する方法

時計 2023.04.15 / 時計

【エクセル】VBAで実行ファイル(EXEファイル)を実行する方法

記事ではMicrosoftのエクセルにおける、VBAから実行ファイル(EXEファイル)を実行する方法について解説していきます。

エクセル業務を効率化させるためにVBAでマクロを組むことは多くの社会人の方が経験あると思います。VBAだけで希望の操作を実現できればいいのですが、他のプログラムの力を借りたい場面もあります。

VBAでは実行ファイル(EXEファイル)を実行することができ、またコマンド引数としてVBAで計算した値などを実行ファイルに渡すことも可能です。

本記事を通して、VBAから実行ファイル(EXEファイル)を実行する方法について理解を深めてください。

実行ファイル(EXEファイル)とは

実行ファイルとはプログラムを起動するためのファイルのことです。Windowsでは拡張子がEXEになっているためEXEファイルと呼ばれます。

例えばアプリケーションをインストールしたあとに起動するためのファイルがEXEファイルです。

基本的にはクリックまたはダブルクリックなどを行ってEXEファイルを起動しますが、VBAを通して起動する方法を次項より解説していきます。

VBAでEXEファイルを実行する方法

VBAでEXEファイルを実行するにはShell関数を使用します。Shell関数は以下構文に沿って記述します。

構文

Shell exeファイルのパス [コマンド引数] [, ウィンドウスタイル]

上記構文の通り、Shellの後ろに実行したいEXEファイルのパスを記述します。起動するプログラムに値や文字列を渡したい場合はパスの後ろに渡したい値(コマンドライン引数)を記述します。

IT用語の確認

コマンドライン引数とは、コマンドラインで指定した引数のことです。主に実行するプログラム名のあとに指定した文字列です

ウィンドウスタイルはEXEファイルを実行して表示されるウィンドウのスタイルを指定(省略可能)します。ウィンドウスタイル名または値で指定します。以下に指定できるウィンドウスタイル名と値を記します。

ウィンドウスタイル名 説明
vbHide 0 表示はしないがフォーカスを持つ
vbNormalFocus 1 元のサイズ・位置で表示されフォーカスを持つ
vbMinimizedFocus 2 最小化された状態で表示されフォーカスを持つ
vbMaximizedFocus 3 最大化された状態で表示されフォーカスを持つ
vbNormalNoFocus 4 元のサイズ・位置で表示されフォーカスを持たない
vbMinimizedNoFocus 6 最小化された状態で表示されフォーカスを持たない

例えばメモ帳を起動する場合は以下のように記述します。

Sub notepad()
    Shell "notepad.exe", vbNormalFocus
End Sub

メモ帳は環境設定によりパスが通っているのでファイル名のみで起動しますが、基本的にはフルパスを記述する必要があります。

VBAでEXEファイルの実行例:Pythonで作成したEXEを使用

私の場合はPythonで作成した実行ファイルをVBAで走らせることがあります。Pythonで作成したプログラムをEXE化する方法は以下記事を参考にしてください。

EXEファイルはエクセルと同じ階層に置いてあり、コマンドライン引数としてエクセルのファイル名とエクセルまでのパスを渡す場合、以下のように記述します。

Sub python()
   Shell ThisWorkbook.Path & "/python.exe " & ThisWorkbook.Name & " " & ThisWorkbook.Path, vbNormalFocus
End Sub

まとめ

本記事「【エクセル】VBAで実行ファイル(EXEファイル)を実行する方法」はいかがでしたか。

ぜひVBAで必要な実行ファイルを起動させて、よりよいマクロを作成できるようになってください。