2016-08-03 4 views
-1

は私がhttp://analystcave.com/excel-calculate-distances-between-addresses/#Calculate_distance_between_two_addresses_using_Google_Maps_in_ExcelApplication.International(xlListSeparator)と同等のMSアクセス?

に次のコードを見つけました。しかし、フォーム上の2つのテキストボックスから値を取るために、私のアクセスDBにそれを使用して、距離を計算し、第3テキストボックスに距離をメートル単位で返したいですコマンドボタンをクリックするとフォームが表示されます。コードを使用すると、fn Application.International(xlListSeparator)を使用するコードの部分でエラーがスローされます。これをAccessで動作させるにはどうすればよいですか?

'Calculate Google Maps distance between two addresses 
Public Function GetDistance(start As String, dest As String) 
    Dim firstVal As String, secondVal As String, lastVal As String 
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" 
    secondVal = "&destinations=" 
    lastVal = "&mode=car&language=pl&sensor=false" 
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
    URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal 
    objHTTP.Open "GET", URL, False 
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    objHTTP.send ("") 
    If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl 
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False 
    Set matches = regex.Execute(objHTTP.responseText) 
    tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator)) 
    GetDistance = CDbl(tmpVal) 
    Exit Function 
ErrorHandl: 
    GetDistance = -1 
End Function 
+0

[回答](http://stackoverflow.com/a/38724667/4088852)を参照してください。ロケールを変更するだけです(あなたがポーランド語でそれを必要としない限り)。 – Comintern

+0

...そして[この回答](http://stackoverflow.com/a/36706171/4088852)は、Windows APIを介してシステムリストセパレータを取得する方法です。 – Comintern

+0

値でCDblを呼び出す前に、ドット区切り記号で置き換える理由は何ですか? – Heinzi

答えて

0

あなたはApplication.International(xlListSeparator)ビットを無視して使用する場合:

tmpVal = matches (0).SubMatches (0) 

それはMS Accessで私のためのトリックを行います。