Excel/VBAで外部アプリ起動にはShell関数ではなくWScript.Shellを使おう!
Excel/VBAで外部アプリケーションを起動する場合は、以前はShell関数を使っていました。
Shell("***.exe", vbNormalFocus)
単純に実行させる場合はこれでも十分なのですが、例えば実行中のカレントディレクトリを実行ファイル自身の場所にアクセスさせるなど、細かい設定はちょっと難しいです。
以下のようにChDir関数でフォルダを指定しても認識しません。
'ダメな例。ChDirの処理は無意味です。 ChDir "C:\...\myFolder" Shell("***.exe", vbNormalFocus)
[ad#top-1]
WScriptオブジェクトを使おう!
VBAでは外部アプリケーションを起動する際は、WScriptオブジェクトを使いましょう。
以下が例です。
Set ws = CreateObject("WScript.Shell") ws.CurrentDirectory = "C:\...\myFolder" ws.Run """***.exe""", 1, True
これで、実行ファイルのカレントディレクトリが、指定のフォルダになってくれます。
実行ファイルを指定する際に、なぜかダブルクォーテーションの中でファイル名をダブルクォーテーションで括る必要があるということです。エスケープ文字にしなきゃいけないので、三連のダブルクォーテーションとなります。
[ad#ad-1]
スポンサーリンク