功能类似于Excel中的importxml?

wKa*_*vey 5 xml excel vba excel-2010 xml-parsing

我喜欢使用 Google Docs 函数 =importxml() 但想知道 Excel 2010 中是否有类似的功能?我似乎找不到程序自动从链接的 XML 文件中提取数据的方法。

例如,我希望能够设置一个标题为“项目名称”的列,然后让下一列将上一列中用户输入的项目名称附加到此 url

http://util.eveuniversity.org/xml/itemLookup.php?name=
Run Code Online (Sandbox Code Playgroud)

然后解析生成的 XML 文件以返回类型 ID。这是在谷歌文档中使用

=importxml(concatenate("http://util.eveuniversity.org/xml/itemLookup.php?name=",A3);"//itemLookup/typeID")
Run Code Online (Sandbox Code Playgroud)

A3 是具有项目名称的列,在本例中为 Tritanium,并从生成的 XML 文件导入数据

http://util.eveuniversity.org/xml/itemLookup.php?name=Tritanium
Run Code Online (Sandbox Code Playgroud)

返回值 34。

我有一个大约 20 个项目名称的列表,每次打开文件时,Google 文档都会自动更新项目 ID。Excel 2010 有没有办法复制这个功能?

谢谢!

将要

vav*_*vav 5

问题是从 2013 年开始的,已经过去了一段时间......

在 Excel 2013 中,有一个函数WEBSERVICE可以加载 XML 文档,这正是您想要的。

还有 FILTERXML 可以使用 XPath 搜索加载的 XML 文档。


chr*_*sen 3

您需要编写自己的 UDF。

一种方法是使用MSXML2库,如下所示:

Function GetData(sName As String, sItem As String, Optional sURL = "") As Variant
    Dim oHttp As New MSXML2.XMLHTTP60
    Dim xmlResp As MSXML2.DOMDocument60
    Dim result As Variant
    On Error GoTo EH

    If sURL = "" Then
        sURL = "http://util.eveuniversity.org/xml/itemLookup.php?name="
    End If

    'open the request and send it'
    oHttp.Open "GET", sURL & sName, False
    oHttp.Send

    'get the response as xml'
    Set xmlResp = oHttp.responseXML
    ' get Item'
    GetData = xmlResp.getElementsByTagName(sItem).Item(0).Text

    ' Examine output of these in the Immediate window'
    Debug.Print sName
    Debug.Print xmlResp.XML

CleanUp:
    On Error Resume Next
    Set xmlResp = Nothing
    Set oHttp = Nothing
Exit Function
EH:
    GetData = CVErr(xlErrValue)
    GoTo CleanUp
End Function
Run Code Online (Sandbox Code Playgroud)

像这样调用它(其中A5包含必需的typeName

=GetData(A5, "typeID")
Run Code Online (Sandbox Code Playgroud)