VBA Excel基于列表返回值

时间:2017-08-08 14:15:22

标签: excel vba excel-vba

以下VBA代码已提供给我们,并且应该可以根据我们在Excel中的邮政编码和住宅号码返回街道地址。

但我似乎无法让它发挥作用。介意我不是VBA专家:(

我有钥匙,知道需要它。我有一个包含邮政编码的列和一个包含街道编号的列。我需要为每一行输出一个街道名称。

知道如何设置吗?

Sub gkkx()

Dim xDoc As Object
 Set xDoc = CreateObject("Microsoft.XMLDOM")
 xDoc.async = False
 If xDoc.Load("https://api.pro6pp.nl/v1/autocomplete?auth_key=KEYGOESHERE&format=xml&pretty=True&nl_sixpp=" & Postcode & "&streetnumber=" & Streetnumber) Then
     If xDoc.DocumentElement.Text = "Not found" Then
     Plaats = ""
     Adres = ""
     Else
     If xDoc.DocumentElement.ChildNodes.Length = 0 Then
         Dim xDoc2 As Object
         Set xDoc2 = CreateObject("Microsoft.XMLDOM")
         xDoc2.async = False
         xDoc2.Load ("https://api.pro6pp.nl/v1/autocomplete?auth_key=KEYGOESHERE&format=xml&pretty=True&nl_sixpp=" & Left(Postcode, 4))
         Plaats = xDoc2.DocumentElement.SelectSingleNode("result/city").Text
         Adres = ""
         Set xDoc2 = Nothing
     Else
         Plaats = xDoc.DocumentElement.SelectSingleNode("results/result/city").Text
         Adres = xDoc.DocumentElement.SelectSingleNode("results/result/street").Text
     End If
    'If xDoc.documentElement.childNodes.length > 1 Then
    '    Tekst41 = MsgBox("Meerdere straten op deze Postcode", vbInformation, "Meerdere Straten")
    'End If
     End If
 Else
   ' The document failed to load.
    Plaats = ""
    Adres = ""
 End If
 Set xDoc = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

我只是浏览你的代码,不做任何测试或真正分析它应该做什么。底部注释掉了一些代码行:

'If xDoc.documentElement.childNodes.length > 1 Then
'    Tekst41 = MsgBox("Meerdere straten op deze Postcode", vbInformation, "Meerdere Straten")
'End If

您可能想询问代码作者是否希望将此部分代码留作注释 - 注释掉代码意味着编译器会忽略代码行。通过为任何带有撇号字符的文本添加前缀来创建注释。很多时候,当有人编写代码时,他们会注释掉部分代码,以便他们可以测试代码的各个部分。可能是作者正在这样做而忘记取消评论(通过删除撇号)这部分代码。

另外,我要指出此代码似乎与Microsoft.XMLDOM一起使用。要开始了解此代码的作用,您可能需要查看HERE

这可能不是一个完整的答案,但我希望它有所帮助。基于你的问题的简洁性和模糊性,要真正了解你想要问的内容,这有点困难。