VBScriptから、別のVBScriptファイルを呼び出す方法を解説しています。
また、同期/非同期それぞれの呼び出し方についても記載しています。
サンプル豊富!逆引きリファレンスはこちら↓↓
まずは、同期呼び出しのサンプルになります。
実行すると、下記の順番でメッセージが表示されます。
①メイン処理開始。> ②サブ処理開始。> ③サブ処理終了。> ④メイン処理終了。
main.vbs
Option Explicit MsgBox("メイン処理開始。") ' WSHオブジェクトの作成 Dim ws Set ws = CreateObject("WScript.Shell") ' 別のVBSを実行 ws.Run "function.vbs", , True ' WSHオブジェクトの破棄 Set ws = Nothing MsgBox("メイン処理終了。")
function.vbs
Option Explicit MsgBox("サブ処理開始。") ' 5秒間停止 WScript.Sleep 5000 MsgBox("サブ処理終了。")
次に、非同期呼び出しのサンプルになります。
実行すると、下記の順番でメッセージが表示されます。
①メイン処理開始。> ②サブ処理開始。> ③メイン処理終了。> ④サブ処理終了。
同期が取れていないため、[function.vbs]にある処理待ちを待たずに、メイン処理が終了しました。
main.vbs
Option Explicit MsgBox("メイン処理開始。") ' WSHオブジェクトの作成 Dim ws Set ws = CreateObject("WScript.Shell") ' 別のVBSを実行 ws.Run "function.vbs" ' WSHオブジェクトの破棄 Set ws = Nothing MsgBox("メイン処理終了。")
function.vbs
Option Explicit MsgBox("サブ処理開始。") ' 5秒間停止 WScript.Sleep 5000 MsgBox("サブ処理終了。")
同期、非同期の切り替え方は下記になります。
赤字の「, , True」の有無により切り替えを行うことが可能です。
サンプルでは、「別のVBSを実行」とコメントがある「ws.Run “function.vbs”」になります。
同期:WSHオブジェクト.Run “実行するVBScriptファイル”, , True
非同期:WSHオブジェクト.Run “実行するVBScriptファイル”
記事は以上になります。慣れないうちに非同期実行は想定外の処理が起きたりと難しいと思いますので、基本的には同期実行をおすすめします。
リンク
コメント