[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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内を探しましたが、それらしきものを見つけることができませんでした。
どなたか、分かる方がいましたら、教えて頂けますでしょうか。
(きさね)
または、画像化して表示されているのかも知れない。この場合は文字列を抜き出せない。
いずれにせよ難しそうなので、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 (???)
半ばあきらめておりましたが、???様のコードでうまくいきました。
本当にありがとうございました!!
(きさね)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.