[[Access VBA] 任意のコマンドを実行する](http://blog.s21g.com/articles/1182)で書いた、Shell関数を使ったVBAでの任意のコマンドの実行方法は非同期なものだと知りました。

Shell関数は任意のコマンドを実行し、**コマンドの終了を待たずにShell関数の呼び出し以降のステートメントが実行**されていきます。


それではあまりうれしくないときがあるので、同期実行する方法を以下に示します。

この方法を使うと、**呼び出したコマンドが終了してから、以降のステートメントが実行**されていきます。

以下、ソースコード。
asp>>
Dim strShellCommand As String     ' シェルコマンド
Dim objWSH As Object              ' WSH

strShellCommand = " "    ' 実行したいコマンド
    
' WSHを使ってコマンドを実行する
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行
Set objWSH = Nothing
<<asp

ソースを見るとなんとなくわかるかもしれませんが、WSHを使います。

**第1引数は、コマンド**を入れてあげます。

**第2引数は、WindowStyle**を入れてあげます。ここに入る値は、Shell関数のと同じです。

**第3引数は、同期実行ならTrue**、非同期実行ならFalseを入れてあげます。


**See Also**
- [VBScript&JScript Tips - プログラムを実行する、ファイルやフォルダを開く](http://www.happy2-island.com/vbs/cafe02/capter00110.shtml)