非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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]

スポンサーリンク

 - Excel, VBA