• 締切済み

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

みんなの回答

  • fzb24794
  • ベストアンサー率66% (4/6)
回答No.1

初心者なので間違いかもしれませんが、地図検索でしたらトップページではなくて、地図のページに行って検索してはどうでしょうか? "http://yahoo.co.jp/" ーー> "https://map.yahoo.co.jp" そこで id名を調べて、データをセットして、submit する。 そんな流れでどうでしょう?

yayax1998
質問者

お礼

参考になりました。ありがとうございました。

関連するQ&A

  • 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

  • 「地図」で検索するにはどういう操作をすればいいので

    ヤフーのトップページから 値を入れて検索を押すまではできるのですが 「ウェブ」ではなく「地図」で検索するにはどういう操作をすればいいのでしょうか? Sub yahoo() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop Do While objIE.Document.ReadyState <> "complete" DoEvents Loop objIE.Document.forms(0).elements("p").Value = "東京" '‘「地図」をクリックする操作をしたい objIE.Document.forms(0).submit Set objIE = Nothing End Sub 宜しくお願いいたします。

  • Excel VBAで検索結果を取得するにはどうしたらいいですか?

    今、Googleの検索結果をコピーして、Excelに貼り付けたいと思って います。 IEで検索するところまで書けたのですが、それ以上がわかりません。 Sub shutoku() With CreateObject("InternetExplorer.application") .Visible = True .navigate ("http://www.google.co.jp/") While .Busy Or .readyState <> 4 DoEvents Wend .document.all.q.Value = "指定のキーワードを入れる" .document.all.btnG.Click End With End Sub これから先、どう書いたらいいか教えてもらえないでしょうか? よろしくお願いします!

  • オブジェクト変数または With ブロック変数が設定されていません。

    下記の様に組みましたが、下記の★印の所で止まる様な事があります。 毎回止まるわけではないのですが、止まる時に「オブジェクト変数または With ブロック変数が設定されていません。」と表示されますが、 原因は何か?どの様にすればいいのか?など詳しく教えてください。 よろしくお願いします。 Sub test() Dim objIE As Object Dim strCOMMENT As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'データをセットする 'htmlドキュメント フォーム(0番目) アイテムに転記(代入)する objIE.Document.forms(0).Item("username").Value = "11111" objIE.Document.forms(0).Item("password").Value = "11111" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.subm.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'タイトル・コメントの読み込み strtitle = Sheets("sheet1").Range("k7") strCOMMENT = Sheets("sheet1").Range("k9") Application.WindowState = xlMinimized While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.forms(0).Item("title").Value = strtitle objIE.Document.forms(0).Item("comment").Value = strCOMMENT While objIE.readystate <> 4 While objIE.busy = True DoEvents ' Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.submit.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'フォーム(0番目)を .Submit(確認) する objIE.Document.forms(0).getElementsByTagName("input")(11).Click '←★この部分で止まる時があります。 While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 7, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Quit '.Quitで閉じる End Sub

  • VBAによるIE操作について

    VBAによるIE操作について WEBブラウザの表示が完了しているかを確認する方法で以下を利用しています。 While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Wend Set objDoc = objIE.Document Do Until objDoc.ReadyState = "complete": DoEvents: Loop これで完了するまで処理を待つのですが、たまにブラウザが読み込み状態で固まってしまうことがあります。 F5で更新すると再度読み込みを行い、処理が正常に戻るのですが、固まってしまった場合のプログラムでの対処法はないでしょうか? 10秒間ループし続けたらsendkeysでF5を押下するなど色々考えたんですが、うまく表現できません>< どなたか分かる方ご教授お願いします!

  • ExcelのVBAでGooglemapの検索

    現在、ExcelのVBAでGooglemapにアクセスし、検索した後、検索結果の住所を抜き出すコードを書きましたが、うまくいきません。 具体的には、検索窓に検索ワードが表示されるだけで、検索結果が表示されませんでした。 そこで、検索文字が入力された状態で、検索ボタンを押すコードを付け加えましたが、 今度は、「オートメーションエラーです。エラーを特定できません」となりうまくいきません。 修正点のご指導の方、お願いいたします。 Sub 住所をmapで検索() Dim obIE As Object Dim el As Variant Dim button As HTMLInputElement Set obIE = CreateObject("InternetExplorer.Application") obIE.Visible = True obIE.navigate "https://www.google.co.jp/maps/place/原宿駅/" obIE.document.getElementById("searchbox-searchbutton").Click While obIE.readyState <> 4 Or obIE.Busy = True DoEvents Wend Set el = obIE.document.getElementsByClassName("widget-pane-link")(13) Cells(1, 1).Value = el.innerText End Sub

  • VBAで教えてgooに自動ログインしたい

    Sub 教えてgoo() Dim objIE As Object Const READYSTATE_COMPLETE As Long = 4 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://login.mail.goo.ne.jp/id/authn/LoginStart?Site=oshiete.goo.ne.jp&Success=http%3A%2F%2Foshiete.goo.ne.jp%2F" Do While objIE.Busy = True DoEvents Loop Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.document.all.all("uname").Value = "gooID" objIE.document.all.all("pass").Value = "gooPW" Do While objIE.Busy = True DoEvents Loop Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.document.all("ログイン").Click End Sub --------------------------------------------------------- を実行してみても、 objIE.document.all.all("uname").Value = "gooID" objIE.document.all.all("pass").Value = "gooPW" objIE.document.all("ログイン").Click の部分がエラーになってしまいます。 教えてgooは、VBAでログインできないように規制されてるのでしょうか?

  • 住所を入力し、検索ボタンをクリックしたいのですが

    グーグルマップを開き 住所を入力し、検索ボタンをクリックしたいのですが それをvbaで実現可能でしょうか? Dim objIE As Object Sub Sample() Dim myObj As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.navigate "https://www.google.co.jp/maps" Do While objIE.Busy = True DoEvents Loop Do While objIE.document.readyState <> "complete" DoEvents Loop Set objIE = Nothing End Sub はできたのですが 「グーグルマップを検索する」が ソース内で見当たらないし さらに 検索ボタンもソース内で探せません。 グーグルの検索窓に「東京都千代田区丸の内1-9-1」 トイレたいのですが VBAでどうすればいいのでしょうか?

  • 表示されるまで待たせたい

    vbaでieの操作をしているのですが Sub マクロ1() Do While ObjIE.Busy = True DoEvents Loop End Sub でも Sub マクロ2() Const READYSTATE_COMPLETE As Long = 4 Do Until ObjIE.ReadyState = READYSTATE_COMPLETE Loop End Sub でも、 表示される前に次のコードへ進んでしまって エラーになってしまいます。 表示されるまで待たせるには Application.Wait (Now + TimeValue("00:00:03")) を付け足すしかないのでしょうか? (できればこれは使いたくないです) ご教授よろしくお願い致します。

  • VBでIEよる新ページ表示後にエラーになる

    VBでIEを操作していますが、ページ表示直後にそのページのソースを処理するステートメントでエラーとなります。デバッグモードのステップインで実行するとエラーにはなりません。尤もページ表示後は、下記処理で表示完了を待つようにしています。 While objIE.ReadyState <> 4 While objIE.Busy = True DoEvents Wend Wend 現在、暫定的に表示完了を待つ処理の後に数秒のインターバルを置くようにしています。何か良い方法はないでしょうか?