Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
Excel Webservice和FilterXML从网站中提取数据_Excel_Excel Formula_Excel 2013 - Fatal编程技术网

Excel Webservice和FilterXML从网站中提取数据

Excel Webservice和FilterXML从网站中提取数据,excel,excel-formula,excel-2013,Excel,Excel Formula,Excel 2013,我有一个电子表格,我曾试图在过去自动化。我得到的最好的回应是使用VBA——尝试过,失败过,即使有作者的所有建议。就在最近,我在2013年的版本中听说了这个新功能,我想知道我是否可以将其合并 我正在尝试使用公式从此页面中提取XXXX mi 有人能提出正确的公式吗?我浏览了博客、支持页面、YouTube视频,我对XML不太在行,但这些数据对我来说至关重要。我甚至进入了页面的源信息,并在Mozilla上使用了firebug,但我仍然迷路了。电子表格的其余部分完成了所有后台工作超链接、缩写机场等。。。这

我有一个电子表格,我曾试图在过去自动化。我得到的最好的回应是使用VBA——尝试过,失败过,即使有作者的所有建议。就在最近,我在2013年的版本中听说了这个新功能,我想知道我是否可以将其合并

我正在尝试使用公式从此页面中提取XXXX mi

有人能提出正确的公式吗?我浏览了博客、支持页面、YouTube视频,我对XML不太在行,但这些数据对我来说至关重要。我甚至进入了页面的源信息,并在Mozilla上使用了firebug,但我仍然迷路了。电子表格的其余部分完成了所有后台工作超链接、缩写机场等。。。这是我剩下的一件需要自动化的事情

感谢您的帮助。
非常感谢。

总距离在的最后一个元素内,仅在ID为dist_body的内

我尝试尽可能地最小化变量集和赋值


请记住,您在数字距离和mi标签之间插入了一个不间断的空格。

您试图读取的数据不是格式良好的XML,因此FilterXML工作表函数不会工作哇,甚至不会假装理解这一点。我会在回家后检查这个,但我会假设它可以工作-我需要对Excel进行任何选项更改以使代码正常运行吗?再次感谢!
Function total_distance(Optional qry As String = "SFO-JFK")
    Dim str As String, htmlBDY As Object
    
    On Error GoTo bm_Report_Error
    
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", "http://www.gcmap.com/mapui?P=" & qry, False
        .Send
        
        If .Status = "200" Then
            Set htmlBDY = CreateObject("HTMLFile")
            htmlBDY.body.innerHTML = .responseText
            With htmlBDY
                'the div as a unique ID
                With .getElementById("dist_body")
                    'should only be one table in this div
                    With .getElementsByTagName("table")(0)
                        'get the last TD in this table
                        With .getElementsByTagName("td")(.getElementsByTagName("td").Length - 1)
                            str = .innerText
                            GoTo bm_Exit_Function
                        End With
                    End With
                End With
            End With
        Else
            str = "Error: " & .Status
            GoTo bm_Exit_Function
        End If
        
    End With

GoTo bm_Exit_Function

bm_Report_Error:
    str = Err.Number & " - " & Err.Description

bm_Exit_Function:
    total_distance = str
End Function