Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 反向地理编码宏:未定义用户定义的类型_Vba_Excel - Fatal编程技术网

Vba 反向地理编码宏:未定义用户定义的类型

Vba 反向地理编码宏:未定义用户定义的类型,vba,excel,Vba,Excel,我试图使用某人的反向地理编码宏来帮助实现不同宏书的功能。代码如下: Public Function ReverseGeoCode(myInput1 As String, myInput2 As String) As String 'You will need to reference Microsoft XML, v6.0 object library Dim XMLDoc As New DOMDocument Dim XMLNODE As IXMLDOMNode D

我试图使用某人的反向地理编码宏来帮助实现不同宏书的功能。代码如下:

Public Function ReverseGeoCode(myInput1 As String, myInput2 As String) As String

'You will need to reference Microsoft XML, v6.0 object library

    Dim XMLDoc As New DOMDocument
    Dim XMLNODE As IXMLDOMNode
    Dim I As Long
    Dim lat, lng, myAddress As String

    lat = myInput1
    lng = myInput2

    XMLDoc.Load "http://maps.googleapis.com/maps/api/geocode/xml?latlng=" & lat & "," & lng & " &sensor=false"

    Do Until XMLDoc.readyState = 4
        DoEvents
    Loop

    If Len(XMLDoc.Text) = 0 Then
        Call MsgBox("No Data!")
        Exit Function
    End If

    Set XMLNode = XMLDoc.SelectSingleNode("/GeocodeResponse/result/formatted_address")

    For i= 0 To XMLNode.ChildNotes.Length - 1
        myAddress = XMLNode.ChildNotes(i).Text
    Next i

    ReverseGeoCode = myAddress

End Function
我对这段代码的任何功能都不太熟悉。我按照说明引用了Microsoft XML v6.0对象库,但当我尝试调用该函数时,单元格会打印“#VALUE!”在代码中,我在第一个
Dim
语句中看到
DOMDocument
突出显示,错误消息为“用户定义类型未定义”


有人知道这里发生了什么吗?

DOMDocument
更改为
DOMDocument60
。然后在代码底部将
ChildNotes
更改为
ChildNodes
。代码对我来说很有用。我注意到DOMDocument60的问题,并打算在您发送代码时对其进行编辑。我会改变另一个问题,看看会发生什么。@PeterT这很好用!感谢您的指导,我将避免在函数中调用
MsgBox
,特别是当该函数打算用作自定义项时(即从工作表单元格调用)。如果没有数据,则不返回任何数据。或者,返回一个特定的错误代码,例如
CVErr(xlErrNA)
,但是您的函数必须返回一个
变量,而不是
字符串
ReverseGeoCode=CVErr(xlErrNa)
代替
MsgBox
,然后
退出功能
,是。我还将处理任何运行时错误,如果在获取数据时出现任何错误(例如服务器停机或任何其他运行时错误),则返回
CVErr(xlErrValue)