5

私は Google Docs 関数 =importxml() を使用するのが大好きですが、Excel 2010 にそのようなものがあったかどうか知りたいですか? リンクされた XML ファイルからプログラムが自動的にデータを取得する方法が見つからないようです。

たとえば、「アイテム名」というヘッダーを含む列を設定し、次の列に、前の列にユーザーが入力したアイテム名をこの URL に追加できるようにしたいと考えています。

http://util.eveuniversity.org/xml/itemLookup.php?name=

次に、結果の XML ファイルを解析して型 ID を返します。これは、Google ドキュメントを使用して実行されます。

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

A3 は項目名 (この場合は Tritanium) を持つ列で、結果の XML ファイルからデータをインポートします。

http://util.eveuniversity.org/xml/itemLookup.php?name=Tritanium

これは値 34 を返します。

ファイルを開くたびにGoogleドキュメントがアイテムIDを自動的に更新する約20のアイテム名のリストがあります。Excel 2010 でこの機能を複製する方法はありますか?

ありがとう!

意思

4

4 に答える 4

5

質問は2013年からです、しばらく経ちました...

Excel 2013 には、XML ドキュメントをロードするための関数WEBSERVICEがあります。

読み込んだXML文書をXPathで検索するFILTERXMLもあります。

于 2015-04-24T19:33:53.323 に答える
3

独自の UDF を作成する必要があります。

MSXML21 つの方法は、次のようなライブラリを使用することです。

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

このように呼び出します(A5必要なが含まれている場所typeName

=GetData(A5, "typeID")
于 2013-01-05T00:20:27.053 に答える
2
Function ImportXML(url As String, query As String)

    Dim document    As MSXML2.DOMDocument60
    Dim http        As New MSXML2.XMLHTTP60

    http.Open "GET", url, False
    http.send

    Set document = http.responseXML

    ImportXML = document.SelectSingleNode(query).nodeTypedValue

End Function
于 2014-02-06T08:47:37.003 に答える
0

[データ] メニューの [Web から] 機能は、オンライン データをスプレッドシートに直接取り込みます。XML データのインポートは、データ メニューにリストされている [他のソースから] サブメニューでも利用できます。

作成された接続は、[データ] メニューの [接続] ダイアログ ボックスで管理されます。

「Web から」接続の作成中にレコード マクロを使用するサンプル コード:

Sub Macro1()
' Macro1 Macro
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://en.wikipedia.org/wiki/Microsoft_Excel" _
        , Destination:=Range("$A$1"))
        .Name = _
        "?affID=110195&tt=270912_7a_3912_6&babsrc=HP_ss&mntrId=3e2fc48700000000000088532eb428ec"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
于 2013-01-06T01:33:41.653 に答える