Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 测试「;交付“第2行”;在SmartyStreet';s API响应_Vba_Api_Smartystreets - Fatal编程技术网

Vba 测试「;交付“第2行”;在SmartyStreet';s API响应

Vba 测试「;交付“第2行”;在SmartyStreet';s API响应,vba,api,smartystreets,Vba,Api,Smartystreets,我正在使用SmartyStreets API,并尝试测试响应,以查看“delivery_line_2”字段中是否有值。在尝试运行代码时,VBA for Excel中不断出现变量未定义错误。有人对最好的方法有什么建议吗?我正在使用以下代码尝试访问: Dim candidates, candidate, components, metadata, analysis As MSXML2.IXMLDOMNode Set candidates = xmlDoc.DocumentElemen

我正在使用SmartyStreets API,并尝试测试响应,以查看“delivery_line_2”字段中是否有值。在尝试运行代码时,VBA for Excel中不断出现变量未定义错误。有人对最好的方法有什么建议吗?我正在使用以下代码尝试访问:

    Dim candidates, candidate, components, metadata, analysis As MSXML2.IXMLDOMNode
    Set candidates = xmlDoc.DocumentElement
    
    For Each candidate In candidates.ChildNodes
        Set components = candidate.SelectSingleNode("components")
        Set metadata = candidate.SelectSingleNode("metadata")
        Set analysis = candidate.SelectSingleNode("analysis")

        Cells(RowIndex, DPVColumn).Value = analysis.SelectSingleNode("dpv_match_code").nodeTypedValue
        Cells(RowIndex, DPVColumn + 1).Value = components.SelectSingleNode("zipcode").nodeTypedValue & "-" & components.SelectSingleNode("plus4_code").nodeTypedValue
        Cells(RowIndex, DPVColumn + 2).Value = candidate.SelectSingleNode("delivery_line_1").nodeTypedValue
        **If Len(candidate.SelectSingleNode("delivery_line_2").nodeTypedValue) > 1 Then
            Cells(RowIndex, DPVColumn + 3).Value = candidate.SelectSingleNode("delivery_line_2").nodeTypedValue
        End If**
谢谢。

警告您并非每次都返回所有数据。这对任何看起来都是正确的,尽管有些回报往往在那个里,而另一些则并没有那个么多<代码>交付行2通常不返回。在这种情况下,尝试获取值可能会引发
错误91“对象变量或未设置块变量”
,因为它不存在。因为它甚至还没有被实例化,所以大多数简单的测试,如
IsEmpty
IsError
IsMissing
,等等,都无法检查这一点。它添加了大量代码,但最好的方法是首先设置一个变量,该变量等于XML返回的引用部分,就像处理元数据一样。对于交付线2也要这样做。如果返回中没有引用,则变量将设置为
“Nothing”
。出于某种原因,这不会引起错误。现在可以测试变量:

Set DeliveryLine2=candidate。选择SingleNode(“delivery\u line\u 2”)'注意缺少NodeyPedValue
如果没有,则DeliveryLine2不算什么
单元格(行索引,DPV列+3)。值=候选。选择SingleNode(“delivery\u line\u 2”)。NodeyPedValue
如果结束
除了测试返回的每一个片段之外,您还需要认识到片段并不总是存在,并用代码正确地处理它们。SmartyStreets会告诉您这一点,但他们对此类网站上大量帮助的引用有点弱。我在Access 2010中完成了我的工作,但它仍然是VBA。

警告您并非每次都返回所有数据。这对任何看起来都是正确的,尽管有些回报往往在那个里,而另一些则并没有那个么多<代码>交付行2通常不返回。在这种情况下,尝试获取值可能会引发
错误91“对象变量或未设置块变量”
,因为它不存在。因为它甚至还没有被实例化,所以大多数简单的测试,如
IsEmpty
IsError
IsMissing
,等等,都无法检查这一点。它添加了大量代码,但最好的方法是首先设置一个变量,该变量等于XML返回的引用部分,就像处理元数据一样。对于交付线2也要这样做。如果返回中没有引用,则变量将设置为
“Nothing”
。出于某种原因,这不会引起错误。现在可以测试变量:

Set DeliveryLine2=candidate。选择SingleNode(“delivery\u line\u 2”)'注意缺少NodeyPedValue
如果没有,则DeliveryLine2不算什么
单元格(行索引,DPV列+3)。值=候选。选择SingleNode(“delivery\u line\u 2”)。NodeyPedValue
如果结束
除了测试返回的每一个片段之外,您还需要认识到片段并不总是存在,并用代码正确地处理它们。SmartyStreets会告诉您这一点,但他们对此类网站上大量帮助的引用有点弱。我在Access 2010中完成了我的工作,但它仍然是VBA