プロが教える店舗&オフィスのセキュリティ対策術

EXCEL2010でGOOGLEMAPルート表示

皆さまこんにちは
以前、Excelにてhyperlinkにてgooglemap表示について質問したものです。
そのときの条件は、プラウザとしてインターネットエキスプローラー8を使用。 (会社のオンラインがエキスプローラー8を使用のため)
GOOGLEマップが開かない、また文字化けするという質問でした。
その後、インターネット上にて検索条件を広げ(エクセルVBAの使用)てみたところ、下記のようなVISUAL BASICを見つけ、参考にして見ました。。
しばらく使用しましたが、ルートの検索にて出発地を毎回入力しなくてはなりません。

そこで質問で指定したセルに出発地を入力しておけば自動的にルート表示ができるようにしたいのです。
なにか知恵をお借りできればと思います。
よろしくお願いいたします。

下記の条件  セルB3にお客様名、セルC3に郵便番号、セルD3に住所
住所をダブルクリックするとGOOGLEMAPが開くという式です。
       
Option Explicit

' 住所が入力されているセルの範囲を定義します ex) C3 以下に住所がある場合
Private Const ADDRESS_DATA = "D3:D65536"
' Google Map 問い合わせ URL
Private Const GOOGLEMAP_QUERYSTR = "http://maps.google.co.jp/maps?f=q&hl=ja&q="
' Google Map 初期表示倍率(整数で1~)
Private Const GOOGLEMAP_ZOOM = 16

' シート上のダブルクリック操作で発生するイベントプロシージャ
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Me.Range(ADDRESS_DATA)) Is Nothing Then
' ダブルクリックでセル編集モードにしない
Cancel = True
'Google Map をブラウザで表示
Call ShowGoogleMap(Target.Value)
End If
End Sub

' 引数で渡した住所付近の地図を Google Map で表示する
Private Sub ShowGoogleMap(ByVal strAddress As String)

Dim strURL As String
If strAddress = "" Then Exit Sub
strURL = UrlEncode(StrConv(strAddress, vbWide))
strURL = GOOGLEMAP_QUERYSTR & strURL & "&z=" & CStr(GOOGLEMAP_ZOOM)
CreateObject("WScript.Shell").Run strURL

End Sub

' 文字列を URL エンコードして返す(JScript の encodeURI 関数を利用)
Private Function UrlEncode(ByVal strText As String) As String
If strText = "" Then Exit Function
With CreateObject("ScriptControl")
.Language = "JScript"
With .CodeObject
UrlEncode = .encodeURI(strText)
End With
End With
End Function

質問者からの補足コメント

  • 早速のご教示ありがとうございます。

    使い方の提示が足りなかったようです。
    目的地として、現在2043件登録しています。
    今後、さらに増えると思います。
    出発地としては二箇所想定しています。

    Excelについては、勉強不足で中々理解に苦しんでます。
    素人の私にもわかるよう、教えてください。
    宜しくお願い致します。

      補足日時:2017/03/08 11:52

A 回答 (2件)

ANo1です



超手抜きでやるなら、こんなのでも一応動作するみたいですが、きちんと処理しておくのに越したことはありません。(ANo1の後半の手抜き版)

Sub test()
 Dim departure As String, destination As String
 Const url = "https://www.google.co.jp/maps/dir/"

 departure = "松本城"
 destination = "諏訪大社"

 CreateObject("WScript.Shell").Run url & departure & "/" & destination
End Sub

※ const文の最後のクォーテーションが変換されちゃうみたいですが、「"」です。
    • good
    • 0
この回答へのお礼

こんにちは
改めてお礼致します。
丁寧な対応ありがとうございます。

あまり詳しく無く、意味不明な処が有ります。
勉強致します。

お礼日時:2017/03/09 11:04

こんにちは



>なにか知恵をお借りできればと思います。
よく理解できていませんので、何かの参考にでもなれば…

>セルに出発地を入力しておけば自動的にルート表示ができるようにしたいのです。
ルート検索であれば目的地もあると思うのですが、目的地は固定なのでしょうか?
(目的地に関して、ご質問文には何も記載がないので…)


いずれにしろ、ルート検索をしてもらうことになるのでしょうから、ちゃんとやるならVBAから入力操作を行うのが間違いないと思います。
エクセルVBAからのIE操作に関しては、検索するといろいろ解説サイトが見つかると思います。
例えば以下とか
http://www.vba-ie.net/ie/index.html


一方で、ちょっと試してみたところ、
 https://www.google.co.jp/maps/dir/出発地/目的地
としてアクセスすると、同様の結果が得られるようです。
(試してみただけですので、正しい利用方法かどうかは不明です。)

確証はありませんが、もしもこれでも良いとすれば、ご提示のコードがほぼそのまま利用できるものと思います。(URLの内容を変えるだけで済むので)
    • good
    • 0
この回答へのお礼

こんにちは

Excelも随分奥が深いですね。
教えて頂いたサイトで少し勉強して
みます。
もし、良い案有りましたらアップ
していただけると嬉しいです。

お礼日時:2017/03/08 19:32

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