2014-05-06 21 views
1

其鏈接到地圖我怎樣才能導入前篩選XML /它鏈接到地圖中的Excel我怎樣才能導入前篩選XML/Excel中

我想一個XML過濾到一個記錄然後通過將其鏈接到地圖來將該記錄導入到excel中。 現在我只能通過執行以下操作做到這一點:

  1. 用XPath表達式過濾所述節點IXMLDOMNode
  2. 獲取節點
  3. 擴展根節點標籤字符串的XML字符串
  4. 字符串指定與.ImportXml地圖(...)

我不知道是否有這樣做更簡單的方法,尤其是第3步(延長線)似乎是一點點複雜。

備註:示例xml取自「Excel 2007 VBA程序員參考」。

提前感謝

安德烈

VBA代碼:

Sub FilterNode() 
    Dim oXmlDoc As DOMDocument60 
    Dim oXmlNode As IXMLDOMNode 
    Dim strXml As String 
    Dim oMap As XmlMap 

    'Filter xml 
    Set oXmlDoc = New DOMDocument60 
    oXmlDoc.async = False 
    oXmlDoc.Load (ThisWorkbook.Path & "\EmployeeSales.xml") 
    Set oXmlNode = oXmlDoc.SelectSingleNode("//Employee[Empid=24601]") 
    strXml = oXmlNode.XML 

    'Extend xml String 
    'is this really necessary? 
    strXml = "<EmployeeSales>" & vbCrLf & strXml & vbCrLf & "</EmployeeSales>" 

    'link xml with map 
    Set oMap = ThisWorkbook.XmlMaps(2) 
    oMap.ImportXml (strXml) 
End Sub 

示例XML:

<?xml version="1.0"?> 
<EmployeeSales> 
    <Employee> 
      <Empid>2312</Empid> 
      <FirstName>Mike</FirstName> 
      <LastName>Alexander</LastName> 
      <InvoiceNumber>100</InvoiceNumber> 
      <InvoiceAmount>2300</InvoiceAmount> 
    </Employee> 

    <Employee> 
      <Empid>24601</Empid> 
      <FirstName>Stephen</FirstName> 
      <LastName>Bullen</LastName> 
      <InvoiceNumber>200</InvoiceNumber> 
      <InvoiceAmount>3211</InvoiceAmount> 
    </Employee> 
</EmployeeSales> 

回答

0

給出的示例代碼是最好的辦法。

+0

thx for your remark – Andre