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)
。