使用Excel VBAparsing多级XMLinput

一般来说,需要使用Excel VBA从XMLparsing符合某些过滤条件的input。 复杂性在于多级XML属性及其配对结果,必须在Excel内依次填充。

XML内容如下:

<Flow index="1" item="1" itemName="BB_150" ID="XXX"> <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">1</Attribute> <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute> </Flow> <Flow index="2" item="2" itemName="CC_200" ID="WWW"> <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">15</Attribute> <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">3</Attribute> </Flow> <Flow index="3" item="3" itemName="DD_200" ID="UUU"> <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">20</Attribute> <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">1</Attribute> </Flow> <Flow index="4" item="4" itemName="EE_115" ID="SSS"> <Attribute name="FUNCTIONAL_X" dataType="Double" unit="" multiplier="" tag="YY">33</Attribute> <Attribute name="X_LOC" dataType="String" unit="" multiplier="" tag="YY">2</Attribute> </Flow> 
  1. 我如何只读取XML中的属性开始的那些节点?
  2. 一旦选定了所有属性的节点,就会开始在Excel VBA中进一步parsing。 首先,查找name = X_LOC并获取值。
  3. 然后,查找名称= FUNCTIONAL_X并检索值。
  4. 现在,需要将所有这些值放入工作表“结果”的Excel列中。 输出到Excel的格式如下:

列(从列A开始,然后继续到下一列…等等)Header Name = X_LOC(按升序sorting并显示)行结果(从row1开始……然后row2..etc)= FUNCTIONAL_X(每次配对X_LOC )

填充到Excel中的结果应如下所示:

 ABCD (Excel column) 1 2 3 4 (X_LOC value) A1 B1 C1 D1 (Excel Row) 1 15 20 33 (FUNCTIONAL_X value) 

注意:如果X_LOC重复相同的值,则不执行任何操作。 保留现有的X_LOC及其FUNCTIONAL_X值。 不需要覆盖。

在Excel中操作XML数据是令人难以置信的麻烦。 我只会坚持VBA。 创build一个如下所示的XML文档,编辑它(使用XPath访问所需的节点/元素),然后保存它。

 Set xmlInventory = CreateObject("Msxml2.DOMDocument.6.0") 

文档: http : //msdn.microsoft.com/en-us/library/ms756987%28v=VS.85%29.aspx

XPath教程: http : //www.w3schools.com/xpath/default.asp