Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10421 / 13644 ツリー ←次へ | 前へ→

【21909】waitpid 関数の使用方法? しろうと 05/2/3(木) 12:02 質問[未読]
【21910】Re:外部プログラムの終了を待って処理を続... かみちゃん 05/2/3(木) 12:34 回答[未読]
【21931】Re:waitpid 関数の使用方法? ichinose 05/2/4(金) 8:03 発言[未読]
【21933】Re:waitpid 関数の使用方法? しろうと 05/2/4(金) 9:44 お礼[未読]

【21909】waitpid 関数の使用方法?
質問  しろうと  - 05/2/3(木) 12:02 -

引用なし
パスワード
   1.あるVBAのプログラムの実行途中で、
2.他のアプリケーションをSHELLコマンドを使用して実行した後に、
3.再度、VBAのプログラムに戻り、続きを実行する
ようなプログラムを作成中です。

3.では、2.の処理で作成されたデータを使用するため、
2.の動作が終わった後に、自動的に、3.が実行されるようにしたいと思っています。

尚、2.の他のアプリケーションは、処理が完了すると、自動的に終了します。

2.の処理には時間がかかるため、2.と3.の間には、

Application.Wait Now + TimeValue("00:00:05") 

等のコマンドを入力していますが、必ずしも、5秒以内で終わるわけではなく、
また、この数値を大きくしてしまいますと、無駄に、作業が止まってしまうことに
なります。

2.のアプリケーションが終了したら、3.が実行されるようなプログラムにするため
には、どうしたら良いでしょうか?

どなたかお分かりの人がいらっしゃいましたら、教えていただけないでしょうか?

(waitpid 関数を使用するとよいらしいのですが、具体的な使用法が分からないで、
 おります。もし、この関数を使用して解決可能な場合は、お手数をお掛け致します
 が、例などを挙げていただけると幸いです。)

以上、よろしくお願い致します。

【21910】Re:外部プログラムの終了を待って処理を...
回答  かみちゃん  - 05/2/3(木) 12:34 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>3.では、2.の処理で作成されたデータを使用するため、
>2.の動作が終わった後に、自動的に、3.が実行されるようにしたいと思っています。

waitpid関数というものは知らないのですが、次のURLの方法が参考になるかと思います。

外部プログラムの実行と処理待ち
http://www2.moug.net/cgi-bin/technic.cgi?exvba+TI15010034

【21931】Re:waitpid 関数の使用方法?
発言  ichinose  - 05/2/4(金) 8:03 -

引用なし
パスワード
   しろうと さん、かみちゃんさん、おはようございます。

>1.あるVBAのプログラムの実行途中で、
>2.他のアプリケーションをSHELLコマンドを使用して実行した後に、
>3.再度、VBAのプログラムに戻り、続きを実行する
>ようなプログラムを作成中です。
>
>3.では、2.の処理で作成されたデータを使用するため、
>2.の動作が終わった後に、自動的に、3.が実行されるようにしたいと思っています。
>
>尚、2.の他のアプリケーションは、処理が完了すると、自動的に終了します。
>
>2.の処理には時間がかかるため、2.と3.の間には、
>
>Application.Wait Now + TimeValue("00:00:05") 
>
>等のコマンドを入力していますが、必ずしも、5秒以内で終わるわけではなく、
>また、この数値を大きくしてしまいますと、無駄に、作業が止まってしまうことに
>なります。
>
>2.のアプリケーションが終了したら、3.が実行されるようなプログラムにするため
>には、どうしたら良いでしょうか?
>
>どなたかお分かりの人がいらっしゃいましたら、教えていただけないでしょうか?
>
>(waitpid 関数を使用するとよいらしいのですが、具体的な使用法が分からないで、
> おります。もし、この関数を使用して解決可能な場合は、お手数をお掛け致します
> が、例などを挙げていただけると幸いです。)
>
>以上、よろしくお願い致します。


WSHを使用してもできそうですよ!!
'============================================
Sub test()
  Set WSHShell = CreateObject("Wscript.Shell")
  WSHShell.Run "notepad.exe", 1, True
  Open "D:\My Documents\memotest.txt" For Input As #1
  Do Until EOF(1)
   Line Input #1, txt$
   Cells(idx + 1, 1).Value = txt
   idx = idx + 1
   Loop
  Close #1
End Sub

上記のコードは、メモ帳を呼び出していますが、
適当なデータを入力した後、Openステートメントで記述されている
ファイル名で保存した後、終了して下さい。
メモ帳で作成した内容をセルA1から表示させます。

【21933】Re:waitpid 関数の使用方法?
お礼  しろうと  - 05/2/4(金) 9:44 -

引用なし
パスワード
   かみちゃんさん ichinoseさん へ

ご回答ありがとうございました!

無事、動作が確認できました!

大変、助かりました!!!本当にありがとうございました!!!

10421 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free