Shell
Shell関数はVBAからメモ帳などの他のアプリケーションを起動することができます。
起動する際にアプリケーションに引数を渡すことも可能なため、任意のファイルをメモ帳で開く、ということも可能です。
Shell関数はアプリケーション起動後に終了することを待たず、次の処理に移行します。つまり、非同期で動作します。
同期でのアプリケーションの起動は「VBAで他のアプリケーションを同期起動する(WshShell)」を参照ください。
構文
| 
					 1  | 
						Function Shell(PathName, [WindowStyle As VbAppWinStyle = vbMinimizedFocus]) As Double  | 
					
| PathName | アプリケーションなどの実行ファイルを指定します。通常はドライブ名からアプリケーション名までのフルパスを指定しますが、環境変数PATHに指定されていればアプリケーション名のみでも構いません。また、アプリケーション名の後ろに半角スペースを1文字おいて、アプリケーションに渡す引数を指定することも可能です。指定できる引数はアプリケーションによって異なります。 | |||||||||||||||||||||
| WindowStyle | 起動時のウィンドウの状態をVbAppWinStyle列挙型で指定します。省略可能です。省略時は既定値のvbMinimizedFocusが適用されます。
 VbAppWinStyle列挙型 
  | 
|||||||||||||||||||||
| Double(戻り値) | 正常にアプリケーションが起動した場合はそのアプリケーションのプロセスIDを返します。異常が発生した場合は0を返します。プロセスIDはタスクマネージャで確認することが可能です。タスクマネージャを「Ctrl + Shift + Escキー」で起動し、表示メニュー→列の選択→PID(プロセスID)にチェックを付けると表示されるようになります。 | 
アプリケーション名が不正の場合
以下はアプリケーション名が不正時のサンプルです。
| 
					 1 2 3 4 5 6  | 
						Sub ShellErrorTest()     Dim dProcessId As Double     '// 誤ったメモ帳のアプリケーション名を指定して起動(エラー)     dProcessId = Shell("C:\Windows\System32\notepad.exeeeeeeeeeeeeeeeeee") End Sub  | 
					
アプリケーション名を間違っている場合は実行時エラー53(ファイルが見つかりません。)が発生します。

このエラーはパスを間違っているか、そのアプリケーションがインストールされていないかのどちらかが原因です。
サンプルコード
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						Sub ShellTest()     Dim dProcessId As Double     '// 引数無しで電卓を起動     dProcessId = Shell("C:\Windows\System32\calc.exe")     Debug.Print dProcessId     '// ファイル指定してメモ帳を起動     dProcessId = Shell("C:\Windows\System32\notepad.exe ""C:\web\testfile.txt""")     Debug.Print dProcessId     '// ウィンドウを最大化でファイル指定してメモ帳を起動     dProcessId = Shell("C:\Windows\System32\notepad.exe ""C:\web\testfile.txt""", vbMaximizedFocus)     Debug.Print dProcessId End Sub  | 
					
実行結果
電卓とメモ帳が2つ起動します。VBAのイミディエイトウインドウには起動したプロセスIDが出力されます。


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