VBで、IEオブジェクトを使用し、あるページを表示し、 その中の

ボタンオブジェクトを押下すると、次のページに移動するプログラム
を書いております。
dim wbrowser as object
Set wBrowser = CreateObject("InternetExplorer.Application")
’item(11)はボタン
wBrowser.all.Item(11).Click

ここで、 通常なら問題なく次ページに移動するのですが、

メッセージボックスが表示され
「はい・キャンセル」
を選択する、メッセージボックスが表示されるような場合、その前
にIEオブジェクトに制御が移動するようで、最後のクリックした段階で
VB側から制御不能ととなります。

VBのみでメッセージボックスを閉じる方法等
何方か解決策がありましたらお教え下さい。

回答の条件
  • 1人2回まで
  • 登録:2007/03/16 15:21:56
  • 終了:2007/03/17 11:05:37

ベストアンサー

id:ardarim No.1

ardarim回答回数897ベストアンサー獲得回数1452007/03/17 02:54:41

ポイント500pt

VBから直接clickメソッドを呼び出してしまうと、clickメソッドの処理内でHTMLのonclickイベントが実行され、ダイアログが表示され、入力待ちになってしまいます。そのためダイアログを閉じない限りclickメソッドから制御が戻ってきません。


以下のような方法で非同期でクリックさせることで回避は可能です。

wBrowser.Document.Script.setTimeout "javascript:document.all.item(11).click()",1000

あるいは別スレッドでクリックさせる等でも大丈夫でしょう。

id:keir1z

ardarim 様。ご回答まことにありがとうございます。

当方の質問が悪くて若干迷いましたが、

IEオブジェクトをアクティブにし

sendkeysでエンター

で、思い通りの動作となりました。


ここ数日悩んでおりましたので本当に助かりました。

ありがとうございました

2007/03/17 11:03:59
  • id:ardarim
    よく見直してみたら回答が片手落ちでした...
    肝心のダイアログを閉じる方法を書いていなかったですね。
    いるかまでいただいてしまったのに申し訳ないです。
  • id:Hajimex
    keir1z様

    申し訳ないのですが、
    このプログラムのソースを書いていただけませんか

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません