0

ボタンをクリックするだけで距離を取得できるようにしようとしているこのVBAスクリプトがあります

シート名はで、とinputwksという名前のセルを定義しました。私はVBAスクリプトで、の値であり、の値であり、距離であると設定しようとしていましたC_postD_postMilesC01C_postC02D_postMiles

サブ GetDistance()

Dim inputWks As Worksheet
Dim c01 As Range
Dim c02 As Range
Dim Miles As Range
Dim distance As Range

'Set distance = inputWks.Range("Miles")


Set c01 = inputWks.Range("C_post")
Set c02 = inputWks.Range("D_post")
'Set Miles = inputWks.Range("Miles")

Application.EnableEvents = False

'c01 As String, c02 As String) As Double
With inputWks

With CreateObject("MSXML2.XMLHTTP")
    .Open "Get", "http://maps.google.co.uk/maps?f=d&source=s_d&saddr=" & c01 & "&daddr=" & c02
    .send

Do: DoEvents: Loop Until .readyState = 4

     If InStr(.responseText, "mi</span>") <> 0 Then _
         distance = Val(Split(Split(Split(.responseText, "<div class=""dir-altroute-inner"">")(1), "<span>")(1), "</span>")(0))
    .abort
End With

End With


inputWks.Range("Miles") = distance
Application.EnableEvents = True

End Sub

元のマルコはこんな感じ

Public Function Getdistance(c01 As String, c02 As String) As Double
With CreateObject("MSXML2.XMLHTTP")
    .Open "Get", "http://maps.google.co.uk/maps?f=d&source=s_d&saddr=" & c01 & "&daddr=" & c02
    .send


Do: DoEvents: Loop Until .readyState = 4

If InStr(.responseText, "mi</span>") <> 0 Then _
    Getdistance = Val(Split(Split(Split(.responseText, "<div class=""dir-altroute-inner"">")(1), "<span>")(1), "</span>")(0))
.abort
End With
End Function
    Application.EnableEvents = True
End Function
4

1 に答える 1

0

私はここでそれをしました答えです

Sub GetDistance()

Dim inputWks As Worksheet
Dim c01 As Range
Dim c02 As Range
Dim Miles As Range
Dim distance As Long

'Set distance = inputWks.Range("Miles")

Set inputWks = Worksheets("Input")
Set c01 = inputWks.Range("C_post")
Set c02 = inputWks.Range("D_post")
Set Miles = inputWks.Range("Miles")

Application.EnableEvents = False


With inputWks

With CreateObject("MSXML2.XMLHTTP")
    .Open "Get", "http://maps.google.co.uk/maps?f=d&source=s_d&saddr=" & c01 & "&daddr=" & c02
     .send

Do: DoEvents: Loop Until .readyState = 4

  If InStr(.responseText, "mi</span>") <> 0 Then _
         distance = Val(Split(Split(Split(.responseText, "<div class=""dir-altroute-inner"">")(1), "<span>")(1), "</span>")(0))
     .abort
End With


End With

    Miles = distance
    Application.EnableEvents = True

サブ終了

于 2013-02-08T09:15:39.487 に答える