Excel VBA質問箱 IV

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

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


49650 / 76736 ←次へ | 前へ→

【31990】Re:subが完了するまで次の実行を待つには
発言  ichinose  - 05/12/3(土) 20:16 -

引用なし
パスワード
   皆さん、こんばんは。

>>Application.OnTime Now + TimeValue("00:00:5"), "あ"
>の前後のプログラムも提示してください。
同感です。
難しい内容なのに質問の記述があやふやな箇所がちょっと多いですね!!

Ontimeの問題ではなく、何かが非同期に作動している
"あ"というプロシジャーの中の作り方の問題ではないのですか?


例えば、「IEを起動して適当なHPを表示し、完全に表示されたら
IEを閉じる」という動作を1秒毎に8回繰り返す

なんていう仕様を考えます。

新規ブックで

「Microsoft Internet Controls」に参照設定をした状態で

Thisworkbookモジュールに
'================================================
Public WithEvents ie As InternetExplorer
Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  ie.Quit
  Set ie = Nothing
End Sub


標準モジュールに
'==============================================================
Private cnt As Long
Sub test1()
  If cnt >= 8 Then cnt = 0
  With ThisWorkbook
    Set .ie = CreateObject("InternetExplorer.Application")
    With .ie
     .Visible = True
     .Navigate "http://www.vbalab.net/vbaqa/c-board.cgi?id=excel"
     End With
    End With
  cnt = cnt + 1
  If cnt < 8 Then Application.OnTime Now() + TimeValue("00:00:01"), "test1"
End Sub

でtest1を実行すると、
一回だけなら成功しますが、上記のようなコードですと
同期が取れていないのでいくつもIEが立ち上がってしまいます。


これを
Thisworkbookには、
'==================================
Public WithEvents ie As InternetExplorer
Public ie_comp As Boolean
Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  ie_comp = True
End Sub


標準モジュールに
'==========================================================
Private cnt As Long
Sub test2()
  On Error Resume Next
  If cnt >= 8 Then cnt = 0
  With ThisWorkbook
   .ie_comp = False
   Set .ie = CreateObject("InternetExplorer.Application")
   With .ie
     .Visible = True
     .Navigate "http://www.vbalab.net/vbaqa/c-board.cgi?id=excel"
    End With
   Do While .ie_comp = False
    DoEvents
    Loop
   .ie.Quit
   Set .ie = Nothing
   End With
  cnt = cnt + 1
  If cnt < 8 Then Application.OnTime Now() + TimeValue("00:00:01"), "test2"
End Sub

とすると、IEとtest2で同期が取られるので
いくつもIEが起動しません。

内容は違いますが(違うのは当たり前ですけど)、こういう現象ではないのですか?
だとしたら、同期を取る方法を考えないとなりませんね!!
0 hits

【31962】subが完了するまで次の実行を待つには Z 05/12/3(土) 4:28 質問
【31965】Re:subが完了するまで次の実行を待つには だるま 05/12/3(土) 8:15 回答
【31968】Re:subが完了するまで次の実行を待つには Z 05/12/3(土) 8:26 質問
【31970】Re:subが完了するまで次の実行を待つには B 05/12/3(土) 10:01 発言
【31978】Re:subが完了するまで次の実行を待つには Kein 05/12/3(土) 13:27 発言
【31989】Re:subが完了するまで次の実行を待つには よろずや 05/12/3(土) 19:40 発言
【31990】Re:subが完了するまで次の実行を待つには ichinose 05/12/3(土) 20:16 発言
【32052】Re:subが完了するまで次の実行を待つには Z 05/12/5(月) 15:26 お礼

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