- 締切済み
VBAでヤフー地図を検索して表示
インターネットエクスプローラーを開いて検索枠に検索語(ユーザーフォームのTextBox7)を入力後、 検索ボタンをクリックして画面が変わったら地図のタグをクリックして地図を表示するという作業 なのですがエラーが起きて困っています。 9月までは正常に動いていたのですが、10月に入ってからエラーが起きるようになりました。 エラーが起きる箇所ではgetelementbyidが使えないのではないかと思い、色々調べて試してみたのですが駄目でした。 どうか宜しくお願いします。 Sub Map_Search() Dim ie As New InternetExplorer 'IEオブジェクトの生成 ie.Navigate2 "http://yahoo.co.jp/" 'Yahooニューストップページ ie.Visible = True While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend With ie 'IE画面の大きさ調整 .Top = 0 .Left = 0 .Height = 1000 .Width = 1286 .Resizable = True End With ie.Document.getelementbyid("srchtxt").Value = TextBox7 '住所を入力 ←ここでエラーが起きる ie.Document.getelementbyid("srchbtn").Click '検索ボタンをクリック ←おそらくここでもエラーになる? While (ie.Busy = True) Or (ie.ReadyState < READYSTATE_COMPLETE) '読み込み待ち DoEvents Wend ie.Document.getelementbyid("map").Click '地図タグをクリック ←おそらくここでもエラーになる? End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Mathmi
- ベストアンサー率46% (54/115)
ExcelVBAでのIE操作はした事がないので、解決方法は分かりませんでしたが、原因らしきものを見つけたので少しだけ。 Yahooのソースを検索した所、srchtxtというidは使われていませんでした。 存在しないidを指定しているので、getElementbyId("srchtxt")でエラーが出たのだと思います。 inputで検索した所、幾つかヒットしましたが、以下の部分が、検索文字列の入力箇所のような気がします。 <input type="search" class="_1wsoZ5fswvzAoNYvIJgrU4" name="p" autoComplete="off" aria-label="検索したいキーワードを入力してください" aria-live="assertive"/> name="p"で検索した所、この一か所でしか使われていないので、getElementbyId("srchtxt")ではなくgetElementsByName("p")とかで対象を指定してみるのはどうでしょうか? idとは違いユニークとは限らないので、もしかしたらpという名前の0番目のオブジェクト、みたいに指定する必要があるかも知れませんが。 不勉強なもので、見当違いな事を言っているかもしれませんが、その時はご容赦下さい。
お礼
回答ありがとうございました。