結構前からIEではGoogle mapが表示できないことは認識していました。

(エラー画面)

 

しかし、過去にいろいろ作成したマクロの中にはIEでGoogle mapを表示させて情報を取得したりするものがあって、それらが使用できないことは大変困ることでした。

 

取り急ぎ困っているのはExcelで管理している道を基にルートを作成するマクロでした。

 

以下の通り、走りたい道をExcelで管理していて、ハイパーリンクにはGoogle mapの短縮URLを設定してあります。

 

 

この短縮URLをGoogle mapで一度展開すると、通常URLが取得できます。

 

この通常URLには経由地の緯度経度情報が含まれていて、その緯度経度を基にどの道とどの道が一番近いかを一覧表にするマクロからルートを作成するのに利用していたのですが、このマクロが動かなくなってしまいました。

(正常に動作していた頃は下記の通り緯度経度情報をメモ情報に設定していた)

 

つまり、一度Google mapを介さないと通常URLが取得できなかったのですが、今回短縮URLを通常URLに変換するサイトを見つけました。

このサイトを利用して通常URLを取得するロジックに変更することにしました。

 

 

例えば上記の「林道 湯の原線」の短縮URLを入れてみると、通常URLに展開してくれます。

 

 

 

この動作をマクロで自動的にやらせればよいわけです。

以下は抜粋ですが、赤字部分の修正でこれまで通り正常に取得できるようになりました。

よかったよかった。

 

・・・

        lUrl = Cells(oSel.Row, oSel.Column).Hyperlinks(1).Address
        ie.navigate "https://bitly.doratool.com/"
        
        time10 = DateAdd("s", 6, Now())
        Do While time10 > Now()
            DoEvents
            If time10 < Now() Then Exit Do
        Loop
                
        
        '短縮URL展開
        lUrl2 = ""
        ie.document.getElementByid("inputUrl").Value = lUrl
        For Each oTg3 In ie.document.GetElementsByTagname("button")
            If oTg3.outerhtml Like "*" & "短縮URL展開" & "*" Then
                oTg3.Click
                time10 = DateAdd("s", 3, Now())
                Do While ie.busy Or ie.readyState <> 4
                    DoEvents
                    If time10 < Now() Then Exit Do
                Loop
                
                For Each oTg4 In ie.document.GetElementsByTagname("h6")
                    If oTg4.outerText Like "*URL展開結果*" Then
                        
                        lUrl2 = "https:" & Mid(oTg4.outerText, InStr(oTg4.outerText, ":") + 1)
                    End If
                Next
                
            End If

        Next
 

・・・

 

一応このマクロは動作するようになりましたが、抜本的にExcel VBAでChromeを操作するように改修することを考えなければならない時期にきているのかもしれません。トホホ。