[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Googleマップで車で行く距離と時間を抽出する方法』(ひこ)
下記の過去にあった『Googleマップで車で行く距離と時間を抽出する方法』の記事を参考にマクロを実行しましましたが、『実行時エラー424 オブジェクトが必要です。』というエラーがでます。
となたか解決方法ご存じないでしょうか。
Excel2019
Windows10
=================================
『Googleマップで(車で行く)距離と時間を調べ、抽出する方法』(きさね)
B列に住所一覧があります。GoogleマップでA1に入力されている住所との距離と時間を調べ、それぞれC列D列に抽出することはできるのでしょうか。
Excel2007
Windows Vista
回答が付かないようなので、ソースを抜き出すまでのサンプル。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
Dim IE As Object Dim i As Long Set IE = CreateObject("InternetExplorer.application") IE.Visible = True IE.Navigate "http://maps.google.co.jp/maps" Call sWait(IE) With IE.document .all("d_launch").Click Call sWait(IE) .all("dir_d_btn").Click .all("d_d").Value = Cells(1, "A").Text .all("d_daddr").Value = Cells(1, "B").Text .all("d_sub").Click Call sWait(IE) For i = 0 To 4 Cells(1, i + 5).Value = .forms(i).outerhtml Next i End With IE.Quit Set IE = Nothing End Sub Sub sWait(OBJ As Object) Sleep 10000 While OBJ.readyState <> 4 While OBJ.Busy = True DoEvents Sleep 1000 Wend Wend End Sub (???) きさね様 スレッドお借りします。 申し訳御座いません。 ???様 この後、どのようにしたら 時間を抜き出せますでしょうか? ヒントだけでも頂けますでしょうか? (閲覧者a) 幾つかの条件で実行し、表示される距離と同じ情報がいずれかのHTMLに含まれていないか調べる。 見つかったなら、その情報の直前にあるユニークな文字列を決めて、Instr関数で探しましょう。 (???) ???様、ありがとうございます。 返事が遅くなり申し訳ございませんでした。 HTML内を探しましたが、それらしきものを見つけることができませんでした。 どなたか、分かる方がいましたら、教えて頂けますでしょうか。 (きさね) Googleのソースは難しい。HTMLソースを見てみたが、怪しいのは"<INPUT value=50"で始まる箇所。 ただ、これがボタンとして行き先と距離の文字列に使われるのかどうかまでは判らず。 地図の座標データかも? または、画像化して表示されているのかも知れない。この場合は文字列を抜き出せない。 いずれにせよ難しそうなので、Google以外の地図サービスを検討してはどうでしょう? (???) (???)さんのコードを一部変更させていただきます。 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub test() Dim IE As Object Dim i As Long Dim tags As Object If WorksheetFunction.CountA(Range("A1:B1")) < 2 Then Exit Sub Set IE = CreateObject("InternetExplorer.application") IE.Visible = True IE.Navigate "http://maps.google.co.jp/maps" Call sWait(IE) With IE.Document .all("d_launch").Click Call sWait(IE) .all("dir_d_btn").Click .all("d_d").Value = Cells(1, "A").Text .all("d_daddr").Value = Cells(1, "B").Text .all("d_sub").Click Call sWait(IE) Range("C1:D1").ClearContents i = 2 For Each tags In .getElementsByTagName("SPAN") If (tags.outerhtml Like "<SPAN>*km</SPAN>" Or tags.outerhtml Like "*時間*分*") And _ InStr(tags.outerhtml, "現在の交通状況") = 0 Then i = i + 1 Cells(1, i).Value = Split(Mid(tags.outerhtml, 7, 30), "<")(0) End If If i = 4 Then Exit For Next End With IE.Quit Set IE = Nothing End Sub Sub sWait(OBJ As Object) Sleep 10000 While OBJ.readyState <> 4 While OBJ.Busy = True DoEvents Sleep 1000 Wend Wend End Sub ※余り深入りしたくないので、私のレスはこれのみです。 (半平太) 2012/10/18 20:27 半平太さん、よいヒントになりました。ありがとう。 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub test() Dim IE As Object Dim i As Long Dim j As Long Set IE = CreateObject("InternetExplorer.application") IE.Visible = True IE.Navigate "http://maps.google.co.jp/maps" Call sWait(IE) Sleep 20000 With IE.Document .all("d_launch").Click Call sWait(IE) Sleep 20000 .all("dir_d_btn").Click Call sWait(IE) For i = 1 To Cells(Rows.Count, "B").End(xlUp).Row .all("d_d").Value = Cells(1, "A").Text .all("d_daddr").Value = Cells(i, "B").Text .all("d_sub").Click Call sWait(IE) Sleep 10000 For j = 0 To .getElementsByTagName("SPAN").Length - 1 If Right(.getElementsByTagName("SPAN")(j).innerHTML, 2) = "km" Then Cells(i, "C").Value = .getElementsByTagName("SPAN")(j).innerHTML Cells(i, "D").Value = .getElementsByTagName("SPAN")(j + 1).innerHTML Exit For End If Next j Next i End With IE.Quit Set IE = Nothing End Sub Sub sWait(OBJ As Object) Sleep 1000 While OBJ.readyState <> 4 While OBJ.Busy = True DoEvents Sleep 100 Wend Wend Sleep 1000 End Sub (???) ???様 半平太様 ありがとうございました。 半ばあきらめておりましたが、???様のコードでうまくいきました。 本当にありがとうございました!! (きさね)
< 使用 Excel:Excel2019、使用 OS:Windows10 >
>『実行時エラー424 オブジェクトが必要です。』というエラーがでます。 どの部分でエラーが出るのか提示したら。 (きさね)さんは「???様のコードでうまくいきました。」と言っているのであなたと仕様条件が違うのでは。 >回答が付かないようなので どういうこと。再投稿ということ。 私には回答権はありません。 (りん) 2022/01/05(水) 22:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.