UWSCがうまく動かない
ExcelからUWSCを使って他のソフト2個を動かして又、Excelに
戻ってくるのですが、UWSCが重なって動作を同時に行う為、次のソフトで実行してみました。すると同時には動作せずに1個のプログラムの動作が終わって次ののプログラムを実行してくれて良くのですが、戻るときにExcelプログラムが真っ白に表示されて上の部分にファイル名と応答無と出てそれ以上進みません。UWSCソフトを終了すれば元には戻りますが、うまく操作をさせるにはどうすれば良いですか?よろしくお願いします。
UWSCの動きは⇒スタートボタンの横のタスクバーにあるソフトをクリックから始まり⇒終わったら又、Excelのタブをクリックして戻ります。
次のソフトはWebで見つけたソフトです。
外部プログラムの実行と処理待ち
そこで、以下のサンプルマクロでは、Shell関数を使用して外部プログラムを実行し、そのプログラムが終了するまで待つように処理を施してあります。
*もうひとつの質問ですが、Win32 API関数の宣言はどこに記載をすればいいのですか?
このままエディータに書けばいいのでしょうか
'--- Win32 API 関数の宣言 ---
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'--- Win32 API 定数の宣言 ---
Global Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
Global Const INFINITE As Long = &HFFFF
Sub WaitRun()
Dim TaskId As Long 'タスクID
Dim hProc As Variant 'プロセスハンドル
' 外部プログラムの実行
TaskId = Shell("c:\Test.bat", 2)
' プロセスハンドルの取得
hProc = OpenProcess(PROCESS_ALL_ACCESS, False, TaskId)
' プロセスのオープン
If OpenProcess(PROCESS_ALL_ACCESS, False, TaskId) <> vbNull Then
' プロセスのシグナル待ち
Call WaitForSingleObject(hProc, INFINITE)
' プロセスクローズ
CloseHandle hProc
End If