VBA共通:VBAからDOSのコマンドを実行する方法

VBA共通:VBAからDOSのコマンドを実行する方法

VBAからDOSのコマンドを実行したい場合には、「WScript.Shell」オブジェクトを生成してRunメソッドでDOSコマンドを指定すればよい。

以下にVBAからMS-DOSのコマンドを実行するサンプルを記述。

WScript.ShellオブジェクトのRunメソッドの構文

WScript.ShellオブジェクトのRunメソッドの構文は以下のとおり。

実行された際のウィンドウサイズ(DOS窓)指定

ウィンドウサイズ(DOS窓)の指定は、コマンド実行時のウィンドウサイズを数値で指定する。

ウィンドウのサイズ指定する値
非表示0
通常ウィンドウサイズ1
最小化2
最大化3

DOSコマンド実行時の同期/非同期モードの指定

通常DOSコマンドをVBAから実行すると非同期、つまりDOSで実行したコマンドが終了するしないにかかわらず、次のコードが実行される。

DOSのコマンドの実行が終了するのを待って次のコードを実行したい場合は、同期モードの指定に”True”を指定する。

VBAからDOSコマンドを実行するサンプルプログラム

以下にVBAからDOSコマンドを実行するサンプルプログラムを記載する。

SMTPサービスを起動するサンプルプログラム。

以下はSMTPサービスを起動するVBAのサンプルプログラム。

サービスの起動を待つように同期モードを”True”としている。

ネットワーク上の共有ドライブに接続するサンプルプログラム

以下は、ネットワーク上の共有フォルダに接続するサンプルプログラム。

ドライブ割り当ては行っていないが、接続が終了するまで待つように同期モードを”True”としている。

VBAからDOSコマンドを実行する方法のまとめ

VBAからDOSのコマンドを実行する場合、指定できるのはウィンドウサイズと同期/非同期モードの指定くらいしかできない。

特に同期モードについては、何も指定しないと非同期で動作することに注意が必要。