プロが教えるわが家の防犯対策術!

過去問の
http://oshiete.goo.ne.jp/qa/7336006.html

につきまして、上記の回答をそのままVBAに記述して
EXCEL2010において実行してみたのですが
「コンパイルエラー 構文エラー」になってしまい
添付の写真のようにエラーの箇所が示されるものの当方では修正ができません。

当方プログラマーではなくただコピペして実行してみただけです。
ググってもわかるレベルでないことがわかり
ここにて質問させていただきたくこととしました。

また、本当のところを申しますと
過去問では出発地の住所が"東京都渋谷区恵比寿~"に固定されておりますが
EXCELシート上のA列に出発地、B列に到着地の住所を入力しておくと
両地点の(車での)距離を表示するようにしたいのです。

大変に恐縮ですが、ご教示くださいますようお願い致します。

「「エクセルでワンクリックでルート検索した」の質問画像

A 回答 (3件)

以前のVBAは役に立たないので、別のVBAを書き換えています。



VBAでIEのページオブジェクトを開いてから、直接書き込んでいます。
質問のものはHTMLファイルを作成して、それを開いています。
表示が終わる(VBAが終了)するまでページはさわらないでください。

1行目はシングルクリックで開くコード。
書き換えるとダブルクリックに出来ます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

以下VBA
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
If Cells(Target.Row, 1).Text = "" Or Cells(Target.Row, 2).Text = "" Then Exit Sub
Dim objIE As Object
Dim tgt1
Dim tgt2

Set objIE = CreateObject("InternetExplorer.application")
tgt1 = Cells(Target.Row, 1).Text
tgt2 = Cells(Target.Row, 2).Text
objIE.Visible = True
objIE.Navigate "http://maps.google.co.jp/maps"
Do While objIE.Busy = True Or objIE.ReadyState <> 4: Loop
'--ルート乗換案内オブジェクトページのの項目をダイレクト書き込み
With objIE.Document
.all("d_launch").Click
Do While objIE.Busy = True Or objIE.ReadyState <> 4: Loop
Application.Wait Now + TimeValue("00:00:02")
'--車で行く~自社住所~得意先住所~検索
.all("dir_d_btn").Click
.all("d_d").Value = tgt1
.all("d_daddr").Value = tgt2
.all("d_sub").Click
.all("d_options_show").Click
End With
Set objIE = Nothing
End Sub
    • good
    • 0
この回答へのお礼

なんとなく似ているからプログラムは少しの書き換えでできるのでは?
という甘い考えで質問致しまして申し訳ございませんでした。
それに苛立つ風もなく一から回答をいただいたばかりか
使い勝手の良いようにプラスアルファのアドバイスまで...

大変にありがたかったので、
ポイントを購入したりしてお礼を増やせないかと思い調べてみましたが
そういうのはないみたいで、残念至極です。
言葉だけでのお礼になってしまいますが、心から御礼申し上げます。

お礼日時:2013/03/11 18:18

適当な修正ですが…




2行目:A列を選択したときに動作→A:B列を選択したときに動作するよう修正

If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub

If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub


30~31行目:選択した行の1カラム目(A列)、2カラム目(B列)を出発地、目的地に指定するよう修正

.WriteText " origin: ""東京都渋谷区恵比寿1-19-15"" ,", 1
.WriteText " destination: """ & Target.Text & """ ,", 1

.WriteText " origin: """ & Cells(Target.Row, 1).Text & """ ,", 1
.WriteText " destination: """ & Cells(Target.Row, 2).Text & """ ,", 1

--
> 両地点の(車での)距離を表示するようにしたいのです。

最初からそのつもりで1から作るんならともかく、ここから修正だとちょっと手を付けにくいです。
わざわざ地図の部分のみ表示するように作られてるっぽいですし。

多くの経路探索のサイトでは、経路検索結果のURLが、
http://~map~.~/~&~=~&FROM=出発地の住所&TO=目的地の住所&~=~&~
とかってなるので、住所の文字列が上手くハマるように、URLの文字列を作成してHYPERLINK関数でリンクとかってのが簡単だと思いますが。
    • good
    • 0

教えて!gooからの表示だと、URLを省略して表示するので、コードの中のURLも省略されているため適正に処理されないです。


OKWaveのQ&Aの方からコピペしてみては?

エクセルでワンクリックでルート検索したいのですが… | MS OfficeのQ&A【OKWave】
http://oshiete.goo.ne.jp/qa/7336006.html


#経験上、こっちは改行コードが変だった気もしますが…。
    • good
    • 0
この回答へのお礼

確かにこちらからコピペしたら正常に表示されました!
すぐにご回答くださり大変にありがとうございました。

質問後半部分のご回答をいただければなお幸いですが、
どなたかA列とB列に入力した両地点を結ぶルートの表示するよう
プログラムを書き換えてはいただけないでしょうか。

なにとぞよろしくお願い致します。

お礼日時:2013/03/08 18:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!