Shell

Shell関数はVBAからメモ帳などの他のアプリケーションを起動することができます。

起動する際にアプリケーションに引数を渡すことも可能なため、任意のファイルをメモ帳で開く、ということも可能です。

Shell関数はアプリケーション起動後に終了することを待たず、次の処理に移行します。つまり、非同期で動作します。

同期でのアプリケーションの起動は「VBAで他のアプリケーションを同期起動する(WshShell)」を参照ください。


構文

PathName アプリケーションなどの実行ファイルを指定します。通常はドライブ名からアプリケーション名までのフルパスを指定しますが、環境変数PATHに指定されていればアプリケーション名のみでも構いません。また、アプリケーション名の後ろに半角スペースを1文字おいて、アプリケーションに渡す引数を指定することも可能です。指定できる引数はアプリケーションによって異なります。
WindowStyle 起動時のウィンドウの状態をVbAppWinStyle列挙型で指定します。省略可能です。省略時は既定値のvbMinimizedFocusが適用されます。

VbAppWinStyle列挙型

定数 内容
vbHide 0 タスクバーには表示されません。そのためウィンドウもありません。完全に非表示状態で起動します。この状態で起動した場合は通常はタスクマネージャから終了させることになります。
vbNormalFocus 1 以前起動したときのウィンドウサイズで起動します。タスクバーにも表示されます。選択された状態で表示されます。
vbMinimizedFocus 2 最小化された状態で起動します。選択された状態になります。
vbMaximizedFocus 3 ウィンドウが最大化された状態で起動します。
vbNormalNoFocus 4 vbNormalFocusと同様に以前起動したときのウィンドウサイズで起動しますが、選択された状態にはなりません。
vbMinimizedNoFocus 6 最小化された状態で起動します。選択された状態にはなりません。
Double(戻り値) 正常にアプリケーションが起動した場合はそのアプリケーションのプロセスIDを返します。異常が発生した場合は0を返します。プロセスIDはタスクマネージャで確認することが可能です。タスクマネージャを「Ctrl + Shift + Escキー」で起動し、表示メニュー→列の選択→PID(プロセスID)にチェックを付けると表示されるようになります。



アプリケーション名が不正の場合

以下はアプリケーション名が不正時のサンプルです。

アプリケーション名を間違っている場合は実行時エラー53(ファイルが見つかりません。)が発生します。

このエラーはパスを間違っているか、そのアプリケーションがインストールされていないかのどちらかが原因です。


サンプルコード

実行結果

電卓とメモ帳が2つ起動します。VBAのイミディエイトウインドウには起動したプロセスIDが出力されます。

イミディエイトウインドウに出力されたプロセスIDとタスクマネージャのプロセスIDが一致しています。