結構前から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を操作するように改修することを考えなければならない時期にきているのかもしれません。トホホ。