前提・実現したいこと
EXCEL VBAでユーザー定義コマンドを作成し、ワークシートに
2地点間の住所から走行距離をGoogleApiから取得しようとしております。
良いサンプルを見つけ、自宅環境(WINDOWS7、EXCEL2010)で下記のサンプルの
ままコピー&ペーストで実行したところうまく動きましたが、
職場の環境(Windows2008ServerR2のシンクライアント環境とOffice365のEXCEL)
ではうまく結果が得られません。
どうしても結果を出したいのですが原因がわかりません。
もちろん参照設定Microsoft XML xxx は設定しています。
Office365環境で実行できている方、もしくはこのつたない説明で問題のありかがわかる方
おられませんでしょうか。
発生している問題・エラーメッセージ
エラーメッセージは発生しませんが、実行時数分固まり、とけると関数の結果が「#VALUE!」となります。
各行でデバッグで止めて確認しましたところ、11行目の「.Send」でとまらないようです。
固まりがとけてもその下の行に進んでいるフシがありません。
該当のソースコード
Function DGMAP(origin As String, destination As String, distance As Boolean) As String
'http://stackoverflow.com/questions/10116301/google-maps-api-for-time-and-distance-data-access-vba
Dim sXMLURL As String sXMLURL = "http://maps.googleapis.com/maps/api/directions/xml?origin=" _ & origin & "&destination=" & destination & "&sensor=false" Dim objXMLHTTP As MSXML2.ServerXMLHTTP60 Set objXMLHTTP = New MSXML2.ServerXMLHTTP60 With objXMLHTTP .Open "GET", sXMLURL, False .setRequestHeader "Content-Type", "application/x-www-form-URLEncoded" .Send End With 'Debug.Print objXMLHTTP.ResponseText Dim domResponse As DOMDocument60 Set domResponse = New DOMDocument60 domResponse.LoadXML objXMLHTTP.ResponseText Dim ixnStatus Set ixnStatus = domResponse.SelectSingleNode("//status") If ixnStatus.Text = "OK" Then Dim ixnDistance, ixnDuration Set ixnDistance = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/distance/text") Set ixnDuration = domResponse.SelectSingleNode("/DirectionsResponse/route/leg/duration/text") End If If IsEmpty(ixnDistance) Then DGMAP = "Empty" Exit Function End If
'距離(True) または時間(False)
If distance = True Then
DGMAP = left(ixnDistance.Text, InStr(1, ixnDistance.Text, " ") - 1)
Else
DGMAP = ixnDuration.Text
End If
Set domResponse = Nothing
Set objXMLHTTP = Nothing
End Function
試したこと
シンクライアント環境が悪いのかと、Windows2007のFAT機でEXCEL2007で実行しましたが、その場合はEXCEL2007が
ユーザー定義コマンドをコマンドとして認識していないようでした(#NAME? これは別の原因?)
職場でのセキュリティ環境のせいでgoogleまで行けていないのかと思い、APIを取りに行くであろう
URL(http://maps.googleapis.com/maps/api/directions)を手でたたいてみると、Googleまでは入って行っているようで
Googleの画面でページがNot Found のエラーがでますので到達はできているようです。
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー