★★Access2000VBA・Excel2000VBA独学~Win32API。Shell関数で実行したコマンドラインの命令を待機する~その他関連事項も
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
目次

※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
  
  
★ Shell関数で、別のプログラムやバッチファイル、コマンドプロンプトのコマンドラインを実行する方法

Accessから他のアプリケーションのファイルを開く方法

公式 Call Shell("アプリ本体のパス",1)

ファイルを直接開きたいときは、プログラム本体のパスのあとに半角空けてから
開きたいファイルのフルパスを記述する。

以下の例は、 C:\dfsr01ハガキ告知面タテ.doc を開く。

≪例1≫
Call Shell("C:\Program Files\Office2000\Office\Winword.exe C:\dfsr01ハガキ告知面タテ.doc", 1)

  

≪フォルダを開く≫
Call Shell("C:\WINNT\explorer.exe D:\f01\testFolder", 1)
Call Shell("explorer D:\f01\testFolder", 1)

  

≪DOSプログラムを直接実行させる場合≫
Call Shell("xcopy c:\order01 d:\order01 /s /e /d /y", 1)

shall "cmd /C del D:\3\*.txt /s", 2)
↑↓すべてのサブフォルダについても「txt」拡張子のファイルを全部消す。
Call Shall("cmd /C del D:\3\*.txt /s", 2)

Dim s_FoldPath As String
Dim s_Cmd01 As String
s_FoldPath = "D:\3"
s_Cmd01 = "cmd /C DEL """ & s_FoldPath & "\*.txt"" /s "
Call Shell(s_Cmd01 ,2)

  

≪DOSのバッチファイルを実行させる場合≫
Dim RetVal
RetVal = Shell("C:\WINDOWS\デスクトップ\Data\databack.bat", 1) ' databack.batを実行します。

  

≪その他≫
Call Shell("""C:\Program Files\Mojosoft\Rockm\Rockm.exe"" ""C:\My Documents\Roc\画像回転と画像コピー.roc""", 1)
Call Shell("C:\Program Files\Internet Explorer\Iexplore.exe C:\order01\index.htm", 1)

  
  

★バッチファイルやコマンドラインを実行中に待機する方法

バッチファイルやコマンドプロンプトのコマンドは、基本的に「非同期」のようなので、VBAで実行すると今の命令が終わらないうちに、次の命令が始まってしまいます。
それを回避するためには「同期処理」をしないといけないのですが、そのほかに「待機する」という方法もあります。
こちらのほうが危険度が少ないような場合はこちらを使ったほうが無難なようです。

※↓バッチファイルの起動だけでなく、バッチのプログラムを直接指定しても良い。

以下、例。

  
  
★ 「超危険!!」WshShellクラスで「非同期」を「同期」でバッチ処理する

VBAでバッチファイル(bat)を非同期/同期で実行する
にあるように、簡単にできるように書いて歩けれど、とてつもない落とし穴がありました。

バッチ実行の場合はわからないんけど、コマンドラインの実行、例えば、コマンドプロンプトの「DEL」を、WshShellにて、「サブフォルダも=/s」で実行すると、指定した以外のファイル、例えば上の階層のファイルが、画面に表示されたメッセージの意味がわからずに誤操作で全部消えてしまいました。
僕の場合は、「txtファイルだけ消して」と指定したにもかかわらず、その他の拡張子のファイルも全部消えました。(上の階層のファイルが。)
これは慎重に対処する必要があります。
多分、自分が未熟なのが原因。でも、とてもわかりにくい。安易に使わないほうが無難です。
使うならしっかりと動作の特性を学んでおかないといけないです。

WshShellクラスを使う時は必ずバックアップを「外部記憶媒体」に作って、その中でテストする必要があります。
特に「DEL」コマンドなどの危険なコマンドのテストは。
(DELなどで削除すると、ゴミ箱にも入らないため、復元が非常に難しくなるので。)

APIやWaitで「待機」する場合は、そのような心配はありません。

  
  

★ 複数のmdbを立て続けに、実行を待機しながら、1つ1つ終了を待ちながら実行する方法

以下の内容の「Command1_Click()」のようなコードを実行。

  
  
★ 一定時間待つ方法(タイマ時イベントを使った方法)
一定時間待つ方法(タイマ時イベントを使った方法)