从xlRangeValueMSPersistXML结果XML获取值

时间:2017-09-06 15:10:35

标签: xml vba

我正在尝试从

中读取以下XML

ActiveCell.Value(XlRangeValueDataType.xlRangeValueMSPersistXML)

<xml xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
 xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
 xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
 <x:PivotCache>
  <x:CacheIndex>1</x:CacheIndex>
  <s:Schema id="RowsetSchema">
   <s:ElementType name="row" content="eltOnly">
    <s:attribute type="Col1"/>
    <s:extends type="rs:rowbase"/>
   </s:ElementType>
   <s:AttributeType name="Col1" rs:name="Field1">
    <s:datatype dt:type="float"/>
   </s:AttributeType>
  </s:Schema>
  <rs:data>
   <z:row Col1="0.33333333333333331"/>
  </rs:data>
 </x:PivotCache>
</xml> 

然而,使用以下代码,我正在努力获取

的内容
Dim x As MSXML2.DOMDocument
Dim s As String
Dim p As IXMLDOMNode

s = ActiveCell.Value(XlRangeValueDataType.xlRangeValueMSPersistXML)

Set x = New MSXML2.DOMDocument
x.LoadXML (s)

Set p = x.FirstChild

<s:datatype dt:type="float"/><z:row Col1="0.33333333333333331"/>我似乎只能获得<x:PivotCache>的回报。似乎只有一个孩子,从本地窗口看,我看不到其他的东西。

感谢。

1 个答案:

答案 0 :(得分:0)

我尝试在powershell中进行操作只是为了看看如何浏览该方案....我不知道如何将其翻译成vba但这里是导航

对于<s:datatype dt:type="float"/>,您可以使用类似

的内容

Set p = x.xml.PivotCache.Schema.Attributetype.datatype.type
Set p = x.PivotCache.Schema.Attributetype.datatype.type

对于<z:row Col1="0.33333333333333331"/>,您可以使用类似

的内容

Set p = x.xml.PivotCache.data.row.Col1Set p = x.PivotCache.data.row.Col1

我无法真正测试它,但希望这有助于......