• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

[Access VBA] 任意のコマンドを実行するで書いた、Shell関数を使ったVBAでの任意のコマンドの実行方法は非同期なものだと知りました。

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

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

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

以下、ソースコード。

   1  Dim strShellCommand As String     ' シェルコマンド
   2  Dim objWSH As Object              ' WSH
   3  
   4  strShellCommand = " "    ' 実行したいコマンド
   5      
   6  ' WSHを使ってコマンドを実行する
   7  Set objWSH = CreateObject("WScript.Shell")
   8  objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行
   9  Set objWSH = Nothing

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

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

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

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

See Also

posted by Png y_tsuda on Fri 9 Jan 2009 at 18:58
Contents
[Access VBA] Shell関数から実行するコマンドは非同期実行 & 同期実行する方法
Comments
Aleksey: The uname check is only due to a somewhat slopp... '11-2
Yu Tsuda: あぁ、そうですね、、syncすると戻ってしまいますね・・・。 ご指摘ありがとうございます!! '09-7
ursm: /usr/portage 以下のファイルは更新のたび元に戻ってしまうので、/etc/porta... '09-7
Yu Tsuda: 見た目だけでも、わざわざGentooをこういうリストに入れてるのがすごいなぁと思ったりしたので... '09-3
Leonard Chin (レオ): ただし、VirtualBoxで「Gentoo」などを選択しても、別にどのOSを入れても大丈夫だ... '09-3
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ