
Excel VBA の Shell — 外部プログラムを起動する、そしてコードが待ってくれない理由
VBA の Shell 関数は外部プログラムを起動した瞬間に立ち去る、撃ちっぱなしの関数です。Shell が返すのはタスク ID であって、プログラムの終了コードでも出力でも成功フラグでもなく、次の行はプログラムがまだ起動している最中に走り出します。これが Shell コードの大半のバグ — コンバーターを Shell で起動し、まだ書き出されていないファイルを開こうとする — の正体です。この記事では、Shell が待たない理由、空白を含むパスを引用符で囲む方法、Shell が exe は起動できても PDF や URL を単独では開けない理由、そしてプログラムの完了を実際に待って出力を読むために Shell を捨てて WScript.Shell の Run や Exec に切り替える場面を解説します。







































































































