Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (26) VBAから非同期処理を実行する

 
(26) VBAから非同期処理を実行する

 VBAのプログラムから非同期処理を実行する為の関数Shell( ) を紹介します。

 Shell( )関数を紹介します。

Shell(実行プログラムパス, ウィンドウ形式){実行プログラムパス}を記載します。実行に成功した場合、この関数はプログラムIDをLong型で返します。
 第二引数のウィンドウ形式に指定できるものを以下の表にまとめました。
定数内容
vbHide0フォーカスを持ち、非表示にされるウィンドウ。定数 vbHide は、Macintosh では使用できません。
vbNormalFocus1フォーカスを持ち、元のサイズと位置に復元されるウィンドウ
vbMinimizedFocus2フォーカスを持ち、最小化表示されるウィンドウ
vbMaximizedFocus3フォーカスを持ち、最大化表示されるウィンドウ
vbNormalNoFocus4最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。
vbMinimizedNoFocus6最小化表示されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。。
 下記サンプルコードは、VBAからVBScriptのSample.vbsを実行する処理です。
 <Sample.vbsの内容>

Msgbox "Sample.vbsが呼び出されました"
 <VBAのコード>

 1行目:  Public Sub Sample_Shell_01()
 2行目:  
 3行目:      ' "C:\Sample.vbs"を実行する
 4行目:      Dim ret As Long
 5行目:      ret = Shell("WScript C:\Sample.vbs", vbNormalFocus)
 6行目:      
 7行目:      ' 実行が正常の行われると、Shell( )関数はそのプログラムIDを返します。
 8行目:      MsgBox "プログラムID:" & ret
 9行目:              
10行目:  End Sub
 このサンプルコードを実行すると、以下の結果が返ります。
 Sample.vbsのメッセージボックスとVBAプロシジャのメッセージボックスの両方が表示されます。Shell( ) 関数の非同期性がわかります。
 VBScriptの起動を例にShell( ) 関数を紹介しましたが、例えばメモ帳など、他のアプリケーションもShell( ) 関数から実行できます。

 1行目:  Public Sub Sample_Shell_02()
 2行目:  
 3行目:      ' "メモ帳"を実行する。
 4行目:      Dim ret As Long
 5行目:      ret = Shell("NotePad.exe", vbNormalFocus)
 6行目:      
 7行目:      ' 実行が正常の行われると、Shell( )関数はそのプログラムIDを返します。
 8行目:      MsgBox "プログラムID:" & ret
 9行目:              
10行目:  End Sub
ページの先頭へ