エクセルでワンクリックでルート検索したい

このQ&Aのポイント
  • 過去問の回答をそのままVBAに記述してEXCEL2010で実行しようとしたが、コンパイルエラーが発生し修正できない
  • 出発地と到着地の住所を入力すると、車での距離を表示する機能をエクセルに追加したい
  • プログラマーでなくともコピペして実行できる方法を教えてほしい
回答を見る
  • ベストアンサー

「エクセルでワンクリックでルート検索したい」(2)

過去問の http://okwave.jp/qa/q7336006.html につきまして、上記の回答をそのままVBAに記述して EXCEL2010において実行してみたのですが 「コンパイルエラー 構文エラー」になってしまい 添付の写真のようにエラーの箇所が示されるものの当方では修正ができません。 当方プログラマーではなくただコピペして実行してみただけです。 ググってもわかるレベルでないことがわかり ここにて質問させていただきたくこととしました。 また、本当のところを申しますと 過去問では出発地の住所が"東京都渋谷区恵比寿~"に固定されておりますが EXCELシート上のA列に出発地、B列に到着地の住所を入力しておくと 両地点の(車での)距離を表示するようにしたいのです。 大変に恐縮ですが、ご教示くださいますようお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kichi8000
  • ベストアンサー率41% (658/1581)
回答No.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

shigotonin2000
質問者

お礼

なんとなく似ているからプログラムは少しの書き換えでできるのでは? という甘い考えで質問致しまして申し訳ございませんでした。 それに苛立つ風もなく一から回答をいただいたばかりか 使い勝手の良いようにプラスアルファのアドバイスまで... 大変にありがたかったので、 ポイントを購入したりしてお礼を増やせないかと思い調べてみましたが そういうのはないみたいで、残念至極です。 言葉だけでのお礼になってしまいますが、心から御礼申し上げます。

その他の回答 (2)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

適当な修正ですが… 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関数でリンクとかってのが簡単だと思いますが。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

教えて!gooからの表示だと、URLを省略して表示するので、コードの中のURLも省略されているため適正に処理されないです。 OKWaveのQ&Aの方からコピペしてみては? エクセルでワンクリックでルート検索したいのですが… | MS OfficeのQ&A【OKWave】 http://okwave.jp/qa/q7336006.html #経験上、こっちは改行コードが変だった気もしますが…。

shigotonin2000
質問者

お礼

確かにこちらからコピペしたら正常に表示されました! すぐにご回答くださり大変にありがとうございました。 質問後半部分のご回答をいただければなお幸いですが、 どなたかA列とB列に入力した両地点を結ぶルートの表示するよう プログラムを書き換えてはいただけないでしょうか。 なにとぞよろしくお願い致します。

関連するQ&A

  • 範囲を指定した中で検索し、その列を指定するVBA

    エクセルVBAのことで伺います。 3行目のD列からBC列の中で、出発地、又は到着地と入力されたセルを探し、 そのセルの含まれる列を指定し、当該マクロを作動させたいと思っているの ですが、 If Intersect(Target, Range("D3:BC3"),Find("出発地")or("到着地").Column) と書いても、構文エラーと表示されてしまいます。 どう書けば良いのか、どなたかご教授願います。 よろしくお願いいたします。

  • excleVBA 出発・到着地 電車 所要時間

    ExcelのA列に「出発地住所」、B列に「到着地住所」のデータが100行ほどあるのですが、C列に電車(+バスや徒歩も含めた)での「所要時間」を出したいと思っております。可能でしたらD列に「運賃」も表示したいです https://oshiete.goo.ne.jp/qa/1641060.html https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12136437552 VBAの知識がないもので、上記の過去の類似している回答を標準モジュールにコピーして使用してみたのですが、「実行時エラー オブジェクト424」等出てうまくいきません。上手くいかず困っております。windows10、Excel2013、64ビットです。どうぞよろしくお願い致します。

  • エクセルへの貼り付けで余計な変換 元の数字が出ない

    こんにちは 教えてください。 サイトなどの欲しい情報をエクセルにコピペすると、 ある一部の数字だけがおかしな変換をされます。 具体的には、例えば「1-1-1」は勝手に「2001/01/01」になり、 これを書式設定で「文字列」に替えると 今度は「36892」とかになり、元の数字は存在しません。 書式を「文字列」にしたうえで自分で打ち込めば、 まあエラー記号が出るだけで、解決するのですが、 それじゃあコピペでもなんでもないので、 なんとかお知恵ください。 けっこう疲れました。 過去ログを見てもいまいちわかりません。 何とぞよろしくお願いします。

  • No.277098 質問:エクセルでできるでしょうか? の回答マクロを使いたいのですが

    お世話になっています 私も同じ様に A列に同じ日付が在り、これを効率よく削除したいと思っていました 以前、「No.277098 質問:エクセルでできるでしょうか?」での 回答マクロを使わせて頂こうと思い[Visual Basic エディター] に コピー・ペーストして実行したところ コンパイルエラー:End Sub が必要です。  と叱られました マクロ文の最後にはちゃんと End Sub があるのですが どうしてもうまく実行されません [Visual Basic エディター] にコピー・ペーストする詳しい方法と コンパイルエラーの原因を教えて下さい

  • エクセルマクロでIMEのひらがなと英数字の切り替え

    エクセルマクロで IMEのひらがなと英数字を切り替える構文を教えてください 参考書やヘルプを見ても 入力規則を設定しなければエラーになるようなので困っています。 Columns(5).Validation.IMEMode = xlIMEModeAlpha これだと 5列目に入力規則を設定していなければ実行時エラーになります。 入力規則を設定せず自由にIMEのオン・オフを切り替えたいのですが どのような構文にすればよいのでしょう

  • EXCELで検索して整理(1列から複数列へ)

    元のデータは1列に、店名、住所、その他情報が載っています。 それを、列ごとに、店名、住所として、さらに特定の情報(文字列)が入っている場合のみ追加して、あとは削除します。 画像をご参照ください。ここでは、店情報として仮に「情報2」という文字列があれば、その店の住所の次の列に「情報2」を加えます。情報の数は5つ程度あり、各情報は店により記載されているものとないものがあります。その中で情報2が含まれていたらそれを追記します。 店の数は膨大なので、どのように操作すれば楽に実行できるでしょうか。 EXCELは2010です。 よろしくお願いします。

  • エクセルファイルから指定列の文字を

    エクセルファイルから指定列の文字を、別のテキストファイルの特定の場所へ順番に差し替えたいです。 【例】 A列の文字→元からあるテキストファイルの内容そのままに、●という特定文字へ、住所1、住所2、住所3・・・ というようにエクセルの列に従って、順番に差し替えてくれる方法ってあるでしょうか? コピペだと大変です(涙) よろしくお願いします。

  • エクセルで照合したデータのコピペ

    照合したエクセルデータ結果を別シートにコピペする方法を教えてくだ さい。 【設問】 エクセル1には A列に電話番号が100件入っています。 エクセル2には A列に電話番号が100件B列に住所が100件 入っています。 電話番号の 内容は一緒ですが、エクセル1と2では並び方が違います。 VLOOKUP関数を使って、エクセル1の電話番号に対応する住所情報を記 入しました。 私用した関数は下記の通りです。 =IFERROR(VLOOKUP(A1,[Book2.xlsx]Sheet1!A:B,2,FALSE),"該当なし") その住所情報を別のエクセルシート3にコピペする方法を教えてくださ い。

  • エクセルの内部エラー【エクセル2007】

    いつもお世話になっています。 さて、エクセルのマクロ付きファイルを実行しようとしたのですが 非表示モジュール MpubFolderBrowse内でコンパイルエラーが発生しました というエラーメッセージがでてとまってしまいました。何度やっても状況は同じ です。なおこのエクセルについては、特定のファイルを書き直しするもので あり、信頼できるものです。 ネットで検索してみたのですが、該当するものがでてきませんでした。 よろしくお願いします。 、

  • エクセルでワンクリックでルート検索したいのですが…

    エクセルでA列に住所が入力されているリストがあるのですが、 会社からこの住所までのルート検索をワンクリックで出来ないでしょうか? 使用ブラウザはグーグルクロムで 使用サイトはグーグルマップの車でのルート検索が出来れば助かります。 よろしくお願いしますm(_ _)m