|
解決したということですが、
念のために、
> Private Const PROCESS_STATUS As Long = &H400 'プロセスの状態を取得する
> Private Const PROCESS_ACTIVE As Long = &H103 'プロセスは実行中
> * As Long = &H400,As Long = &H103 の記述はまだ理解できていません。
これは定数の定義で、その数値にコメント部分の意味を割り当てた
ということです。あとで使うときに、&H400 と指定するより、
PROCESS_STATUS と指定した方がコードが読みやすいですよね。
例えば、
> ProcessHandle = OpenProcess(PROCESS_STATUS, False, ProcessID)
>' プロセスハンドル情報の取得
ProcessHandle = OpenProcess(&H400, False, ProcessID)
とするより意味を理解しやすいですよね。
> Do
> GetExitCodeProcess ProcessHandle, ExitCode
>' プロセス状態の取得
>
> DoEvents
> Loop While ExitCode = PROCESS_ACTIVE
>' プロセスが終了するまでループさせる(或いは、待っているのでしょうか)
状態が PROCESS_ACTIVE(プロセスは実行中)の間はループさせるということですね。
> DoCmd.RunMacro "tacifimport_delete"
>' テーブルの初期化
>
> DoCmd.RunMacro "cif_import"
>' テーブルの作成(インポートです)
RunMacro(マクロ)でクエリを実行する場合非同期ですので、
実行終了を待たずに、次のコードが実行されます。
ですので、テーブルの初期化が終わる前に、
次のインポートが実行される可能性があります。
ここは、
CurrentDB.Excute "削除クエリ名"
Docmd.TransferText acLinkDelim, "インポート定義","テーブル名","ファイル名"
というようにVBAで記述した方が安全でしょう。
|
|