VBでIEを操作することについての質問です。 Yahoo の検索キーワードを入れて"検索"をクリックするだけなのですがどうしても出来ません。 以下はエラーメッセージとコードです。最後のクリックが動きません。  


実行時エラー'91';
オブジェクト変数またはWithブロック変数が設定されていません。

Dim objIE As Object 'IEオブジェクト参照用
Dim time2 As Date '2秒待ちに使う。
Dim strNAME As String '名前の入力

strNAME = InputBox("キーワード?", "", "キーワード・テスト")

'IEを起動する
Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
objIE.Visible = True
objIE.Navigate2 "http://www.yahoo.co.jp/"

time2 = DateAdd("s", 2, Now()) '2秒後を計算する
Do While True '無限ループ
DoEvents
If time2 < Now() Then Exit Do '2秒後に抜ける
Loop

objIE.document.All("p").Value = strNAME
objIE.document.All("search").Click

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/03/04 00:48:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:KirakiraHikaru No.1

回答回数354ベストアンサー獲得回数68

ポイント100pt

ちょっと簡単に見てみただけなので、正しいかわかりませんが、

objIE.document.All("st").Click

とする必要があるのではないでしょうか?


d.getElementById('sbox').innerHTML='<a id=mk href="/r/ot" title="Yahoo! Search">
</a>
<form id=s class=v1 name=sf1 action="http://search.yahoo.co.jp/search">
<fieldset id=fs><div id=v>
<span id=c>検索メニュー:</span>
<a id=v1 class=h onClick="t(this);return false" href="/r/wes" title="ウェブ"><b></b>ウェブ</a>
<span class=sep>-</span><a id=v2 class=o onClick="t(this);return false" href="/r/dis" title="登録サイト"><b></b>登録サイト</a>
<span class=sep>-</span><a id=v3 class=o onClick="t(this);return false" href="/r/ims" title="画像"><b></b>画像</a>
<span class=sep>-</span><a id=v4 class=o onClick="t(this);return false" href="/r/vis" title="動画"><b></b>動画</a>
<span class=sep>-</span><a id=v5 class=o onClick="t(this);return false" href="/r/bls" title="ブログ"><b></b>ブログ</a>
<span class=sep>-</span><a id=v6 class=o onClick="t(this);return false" href="/r/dics" title="辞書"><b></b>辞書</a>
<span class=sep>-</span><a id=v7 class=o onClick="t(this);return false" href="/r/chs" title="知恵袋"><b></b>知恵袋</a><span class=sep>-</span><a id=v8 class=o onClick="t(this);return false" href="/r/ars" title="エリア"><b></b>エリア</a><span class=sep>-</span><a id=v9 class=o onClick="t(this);return false" href="/r/prs" title="商品"><b></b>商品</a></div><div id=ss><span id=sw class=f><label id=sb for=fp class=np>検索:</label></span><span id=ip class=f><input name=p id=fp type=text></span><span id=sn class=f>
<input type=image id=st src="http://i.yimg.jp/images/top/searchbox/s_btn_off.gif" alt="検索" onMouseOver="this.src=\'http://img.yahoo.co.jp/images/top/searchbox/s_btn_on.gif\';" onMouseOut="this.src=\'http://img.yahoo.co.jp/images/top/searchbox/s_btn_off.gif\';" border=0>
</span>
<span id=ld class=f>
<a href=/r/weo>検索オプション</a></span><input name=fr type=hidden value="top_v2"><input name=tid type=hidden value="top_v2"><input type=hidden name=ei value="euc-jp"><span id=stag class=f></span></div></fieldset></form>';

Yahooのトップページのソースを見ると、

というJavaScriptによって、

ページ表示時にFormの内容が書き換えられているので、

検索ボタンはname=searchからid=stに置き換わっています。

ですので、 objIE.document.All("search")ではオブジェクトが存在しないので、

実行時エラー'91';
オブジェクト変数またはWithブロック変数が設定されていません。

となってしまうのだと思います。

  • id:honcar
    ありがとうございます。 私にはFormの内容を書き換えているしかけが理解できていませんが、今、STで動くことを確認しました。 ずーっと悩んでいたのですが今夜は気持ちよく眠れます。 

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

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

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

回答リクエストを送信したユーザーはいません