簡體   English   中英

使用MS Excel VB腳本從XML讀取特定數據

[英]Reading specifc data from XML using MS Excel VB script

我是VB編程的新手,我正在嘗試讓以下解決方案起作用

我有一個以1分鍾的速度刷新的站點,可以將數據作為XML頁面進行訪問,我正在嘗試加載XML文件並解析以讀取特定的行和特定的列並更新為工作表(僅包含數值和時間戳)在XML文件中按時間和結構更改,標記,常量保持一致)。

要求是從“ row refno =“ XX”“和第1、5列的每一行讀取數據。我的要求是非常頻繁地讀取數據,因此從性能的角度來看,也要尋求專家意見以及優化代碼。

我已經開發了使用停止/啟動控制每分鍾執行一次子例程的代碼,但是在XML解析中遇到了困難。

  1. 未加載文檔錯誤:文檔頂層無效
  2. 我的意圖是讓代碼通過“行引用”獲得單行,然后使用標識符獲取所需的列值,這將使我能夠靈活地將此代碼與由實時應用程序生成的類似XML復用。

到目前為止,我已經在下面粘貼了代碼以測試場景,但是沒有運氣。 任何幫助和指導都非常感謝。

<ddsml xmlns:xsi="http://www.w3.org/2005/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="/gpm/include/ddsml.xsd">
<server>
<name>AAQ-MMM-Server</name>
<version>YOTV1R14</version>
<functionality>3008</functionality>
<platform>y/OS</platform>
</server>
<report>
<metric id="BPB">
<description>BPB (Central Processor Complex)</description>
<format>report</format>
<numcols>31</numcols>
</metric>
<resource>
<reslabel>,GAQ1,MVS_IMAGE</reslabel>
<restype>MVS_IMAGE</restype>
<reslabelurl>,GAQ1,MVS_IMAGE</reslabelurl>
</resource>
<time-data>
<local-start>20010101155200</local-start>
<local-end>20140708155300</local-end>
<utc-start>20140708055200</utc-start>
<utc-end>20140708055300</utc-end>
<local-prev>20140708155130</local-prev>
<local-next>20140708155330</local-next>
<display-start locale="en-us">01/01/2001 15:52:00</display-start>
<display-end locale="en-us">01/01/2001 15:53:00</display-end>
<gatherer-interval unit="seconds">60</gatherer-interval>
<data-range unit="seconds">60</data-range>
</time-data>
<caption><var><name>BPBHPNAM</name><value>TH7</value></var><var><name>BPBHMOD</name><value>2817</value></var><var><name>BPBHMDL</name><value>713</value></var><var><name>BPBHCMSU</name><value>1473</value></var><var><name>BPBHWF</name><value>80.0</value></var><var><name>BPBHLMSU</name><value>61</value></var><var><name>BPBHGNAM</name><value>N/A</value></var><var><name>BPBHIMSU</name><value>1133</value></var><var><name>BPBHCAP</name><value>0.0</value></var><var><name>BPBHLMAX</name><value>390</value></var><var><name>BPBHGLIM</name><value>N/A</value></var><var><name>BPBHGL4H</name><value></value></var><var><name>BPBHRMSU</name><value>14400</value></var><var><name>BPBHRGRP</name><value>N/A</value></var><var><name>BPBHGAUN</name><value>N/A</value></var><var><name>BPBHCPU</name><value>00000000000FC826</value></var><var><name>BPBHCPNO</name><value>13</value></var><var><name>BPBHICNO</name><value>0</value></var><var><name>BPBHIFAN</name><value>0</value></var><var><name>BPBHYCFN</name><value>4</value></var><var><name>BPBHIFLN</name><value>0</value></var><var><name>BPBHSUPN</name><value>13</value></var><var><name>BPBHPANO</name><value>16</value></var><var><name>BPBHWAIT</name><value>NO</value></var><var><name>BPBHPMSU</name><value>3</value></var><var><name>BPBHDEDC</name><value>3</value></var><var><name>BPBHDEDA</name><value>0</value></var><var><name>BPBHDEDI</name><value>0</value></var><var><name>BPBHSHRC</name><value>10</value></var><var><name>BPBHSHRA</name><value>0</value></var><var><name>BPBHSHRI</name><value>13</value></var><var><name>BPBHVCPU</name><value>NO</value></var><var><name>BPBHWMGT</name><value>YES</value></var><var><name>BPBHCCAI</name><value>100</value></var><var><name>BPBHCCCR</name><value>0</value></var><var><name>BPBHCUTL</name><value>44.2</value></var><var><name>BPBHAUTL</name><value>0.0</value></var><var><name>BPBHUUTL</name><value>12.7</value></var><var><name>BPBHLUTL</name><value>0.0</value></var><var><name>BPBHFUTL</name><value>0.0</value></var></caption><row refno="1"><col>*DP</col> <col/> <col/> <col/> <col>52.0</col> <col/> <col/> <col>1.8</col> <col>33.8</col> <col>35.5</col> <col>CS</col> <col>49</col> <col>3</col> <col>988</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="2"><col>THB</col> <col>0</col> <col>0</col> <col>NO</col> <col>2.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>CP</col> <col>2</col> <col>0</col> <col>20</col> <col>10.1</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>30720</col> <col/> <col>NO</col> <col/></row>
<row refno="3"><col>THC</col> <col>0</col> <col>119</col> <col>NO</col> <col>2.0</col> <col>52.3</col> <col>52.4</col> <col>0.0</col> <col>8.1</col> <col>8.1</col> <col>CP</col> <col>2</col> <col>0</col> <col>12</col> <col>6.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>AZZ1</col> <col>SYPLX2S</col> <col>12</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>75776</col> <col/> <col>NO</col> <col/></row>
<row refno="4"><col>THF</col> <col>0</col> <col>1</col> <col>NO</col> <col>1.0</col> <col>0.8</col> <col>0.8</col> <col>0.0</col> <col>0.1</col> <col>0.1</col> <col>CP</col> <col>1</col> <col>0</col> <col>6</col> <col>6.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>16384</col> <col/> <col>NO</col> <col/></row>
<row refno="5"><col>TH1</col> <col>0</col> <col>100</col> <col>NO</col> <col>8.0</col> <col>10.8</col> <col>11.0</col> <col>0.2</col> <col>6.6</col> <col>6.8</col> <col>CP</col> <col>8</col> <col>0</col> <col>274</col> <col>34.6</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>AAQ1</col> <col>SPXMY2X</col> <col>330</col> <col>145</col> <col>620</col> <col/> <col/> <col/> <col/> <col>294912</col> <col/> <col>NO</col> <col/></row>
<row refno="6"><col>TH11</col> <col>0</col> <col>9</col> <col>NO</col> <col>2.0</col> <col>4.0</col> <col>4.1</col> <col>0.0</col> <col>0.6</col> <col>0.6</col> <col>CP</col> <col>2</col> <col>0</col> <col>4</col> <col>4.0</col> <col>0</col> <col>1</col> <col>1</col> <col>TBI1</col> <col>SYPLX2I</col> <col>4</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>16384</col> <col/> <col>NO</col> <col/></row>
<row refno="7"><col>TH2</col> <col>0</col> <col>106</col> <col>NO</col> <col>8.0</col> <col>11.4</col> <col>11.7</col> <col>0.2</col> <col>7.0</col> <col>7.2</col> <col>CP</col> <col>8</col> <col>0</col> <col>386</col> <col>48.8</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>AAQ3</col> <col>SPXMY2X</col> <col>330</col> <col>145</col> <col>620</col> <col/> <col/> <col/> <col/> <col>294912</col> <col/> <col>NO</col> <col/></row>
<row refno="8"><col>TH3</col> <col>0</col> <col>42</col> <col>NO</col> <col>4.0</col> <col>9.2</col> <col>9.3</col> <col>0.0</col> <col>2.8</col> <col>2.9</col> <col>CP</col> <col>4</col> <col>0</col> <col>165</col> <col>41.7</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>AAQ5</col> <col>SPXMY2X</col> <col>165</col> <col>60</col> <col>165</col> <col/> <col/> <col/> <col/> <col>131072</col> <col/> <col>NO</col> <col/></row>
<row refno="9"><col>TH4</col> <col>0</col> <col>0</col> <col>NO</col> <col>3.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>CP</col> <col>0</col> <col>3</col> <col>0</col> <col>100</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>256</col> <col/> <col/> <col/></row>
<row refno="10"><col>TH6</col> <col>0</col> <col>4</col> <col>NO</col> <col>2.0</col> <col>1.7</col> <col>1.7</col> <col>0.0</col> <col>0.3</col> <col>0.3</col> <col>CP</col> <col>2</col> <col>0</col> <col>30</col> <col>30.3</col> <col>0</col> <col>1</col> <col>1</col> <col>GAQL</col> <col>SPXMY2X</col> <col>30</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>4096</col> <col/> <col>NO</col> <col/></row>
<row refno="11"><col>TH7</col> <col>0</col> <col>38</col> <col>NO</col> <col>8.0</col> <col>4.2</col> <col>4.2</col> <col>0.0</col> <col>2.6</col> <col>2.6</col> <col>CP</col> <col>8</col> <col>0</col> <col>56</col> <col>7.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>GAQ1</col> <col>SPXMY2X</col> <col>37</col> <col>15</col> <col>70</col> <col/> <col/> <col/> <col/> <col>294912</col> <col/> <col>NO</col> <col/></row>
<row refno="12"><col>TH8</col> <col>0</col> <col>18</col> <col>NO</col> <col>8.0</col> <col>2.0</col> <col>2.0</col> <col>0.0</col> <col>1.2</col> <col>1.3</col> <col>CP</col> <col>8</col> <col>0</col> <col>18</col> <col>2.2</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>GAQ3</col> <col>SPXMY2X</col> <col>37</col> <col>15</col> <col>70</col> <col/> <col/> <col/> <col/> <col>294912</col> <col/> <col>NO</col> <col/></row>
<row refno="13"><col>TH9</col> <col>0</col> <col>63</col> <col>NO</col> <col>4.0</col> <col>13.7</col> <col>13.9</col> <col>0.0</col> <col>4.2</col> <col>4.3</col> <col>CP</col> <col>4</col> <col>0</col> <col>17</col> <col>4.3</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col>GAQ5</col> <col>SPXMY2X</col> <col>17</col> <col>6</col> <col>17</col> <col/> <col/> <col/> <col/> <col>196608</col> <col/> <col>NO</col> <col/></row>
<row refno="14"><col>PHYSICAL</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>1.2</col> <col/> <col>1.5</col> <col>CY</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>0</col> <col/> <col/> <col/></row>
<row refno="15"><col></col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="16"><col>*YCFPOOL</col> <col/> <col/> <col/> <col>4.0</col> <col/> <col/> <col>0.0</col> <col>99.9</col> <col>99.9</col> <col>IS</col> <col>0</col> <col>4</col> <col>0</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="17"><col>THA</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>99.9</col> <col>99.9</col> <col>0.0</col> <col>50.0</col> <col>50.0</col> <col>IP</col> <col>0</col> <col>2</col> <col>0</col> <col>0.0</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="18"><col>TH5</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>99.9</col> <col>99.9</col> <col>0.0</col> <col>50.0</col> <col>50.0</col> <col>IP</col> <col>0</col> <col>2</col> <col>0</col> <col>0.0</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="19"><col>PHYSICAL</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>0.0</col> <col/> <col>0.0</col> <col>IY</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="20"><col></col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="21"><col>*YCF</col> <col/> <col/> <col/> <col>4.0</col> <col/> <col/> <col>0.0</col> <col>99.9</col> <col>99.9</col> <col>FS</col> <col>0</col> <col>4</col> <col>0</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="22"><col>THA</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>99.9</col> <col>99.9</col> <col>0.0</col> <col>50.0</col> <col>50.0</col> <col>FP</col> <col>0</col> <col>2</col> <col>0</col> <col>100</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="23"><col>TH5</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>99.9</col> <col>99.9</col> <col>0.0</col> <col>50.0</col> <col>50.0</col> <col>FP</col> <col>0</col> <col>2</col> <col>0</col> <col>100</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="24"><col>PHYSICAL</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>0.0</col> <col/> <col>0.0</col> <col>FY</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="25"><col></col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="26"><col>*KPP</col> <col/> <col/> <col/> <col>40.0</col> <col/> <col/> <col>0.4</col> <col>12.6</col> <col>13.0</col> <col>US</col> <col>40</col> <col>0</col> <col>988</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<row refno="27"><col>THB</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>UP</col> <col>2</col> <col>0</col> <col>21</col> <col>13.8</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="28"><col>THC</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>1.4</col> <col>1.5</col> <col>0.0</col> <col>0.2</col> <col>0.2</col> <col>UP</col> <col>2</col> <col>0</col> <col>12</col> <col>7.8</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="29"><col>TH1</col> <col/> <col/> <col>NO</col> <col>6.0</col> <col>9.9</col> <col>10.0</col> <col>0.0</col> <col>4.6</col> <col>4.6</col> <col>UP</col> <col>6</col> <col>0</col> <col>342</col> <col>75.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="30"><col>TH11</col> <col/> <col/> <col>NO</col> <col>2.0</col> <col>0.1</col> <col>0.2</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>UP</col> <col>2</col> <col>0</col> <col>4</col> <col>5.2</col> <col>0</col> <col>1</col> <col>1</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="31"><col>TH2</col> <col/> <col/> <col>NO</col> <col>6.0</col> <col>11.6</col> <col>11.7</col> <col>0.0</col> <col>5.4</col> <col>5.4</col> <col>UP</col> <col>6</col> <col>0</col> <col>342</col> <col>75.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="32"><col>TH3</col> <col/> <col/> <col>NO</col> <col>5.0</col> <col>4.4</col> <col>4.4</col> <col>0.0</col> <col>1.7</col> <col>1.7</col> <col>UP</col> <col>5</col> <col>0</col> <col>171</col> <col>45.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="33"><col>TH7</col> <col/> <col/> <col>NO</col> <col>6.0</col> <col>0.1</col> <col>0.1</col> <col>0.0</col> <col>0.0</col> <col>0.0</col> <col>UP</col> <col>6</col> <col>0</col> <col>32</col> <col>7.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="34"><col>TH8</col> <col/> <col/> <col>NO</col> <col>6.0</col> <col>0.9</col> <col>0.9</col> <col>0.0</col> <col>0.4</col> <col>0.4</col> <col>UP</col> <col>6</col> <col>0</col> <col>32</col> <col>7.0</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="35"><col>TH9</col> <col/> <col/> <col>NO</col> <col>5.0</col> <col>0.7</col> <col>0.7</col> <col>0.0</col> <col>0.3</col> <col>0.3</col> <col>UP</col> <col>5</col> <col>0</col> <col>32</col> <col>8.4</col> <col>N/A</col> <col>N/A</col> <col>N/A</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col>NO</col> <col/></row>
<row refno="36"><col>PHYSICAL</col> <col/> <col/> <col/> <col/> <col/> <col/> <col>0.3</col> <col/> <col>0.3</col> <col>UY</col> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/> <col/></row>
<column-headers> <col type="T">BPBPPNAM</col> <col type="N">BPBPDMSU</col> <col type="N">BPBPAMSU</col> <col type="T">BPBPCAPD</col> <col type="N">BPBPLPNO</col> <col type="N">BPBPLEFU</col> <col type="N">BPBPLTOU</col> <col type="N">BPBPPLMU</col> <col type="N">BPBPPEFU</col> <col type="N">BPBPPTOU</col> <col type="T">BPBPIND</col> <col type="N">BPBPLPND</col> <col type="N">BPBPDEDP</col> <col type="N">BPBPWGHT</col> <col type="N">BPBPLPSH</col> <col type="T">BPBPVCMH</col> <col type="T">BPBPVCMM</col> <col type="T">BPBPVCML</col> <col type="T">BPBPOSNM</col> <col type="T">BPBPLPCN</col> <col type="N">BPBPLCIW</col> <col type="N">BPBPLCMW</col> <col type="N">BPBPLCXW</col> <col type="N">BPBPCGNM</col> <col type="N">BPBPCGLT</col> <col type="N">BPBPCGEM</col> <col type="N">BPBPCGEX</col> <col type="N">BPBPCSMB</col> <col type="N">BPBPUPID</col> <col type="T">BPBPCAPI</col> <col type="N">BPBPHWCC</col> </column-headers>
</report>
</ddsml>






/* Code */
Sub FetchLiveData()

'Declaration section
Dim CPCxmlDom As MSXML2.DOMDocument

Dim strErrText As String
Dim xmlPE As MSXML2.IXMLDOMParseError

Dim xresult As MSXML2.IXMLDOMNode
Dim xentry As MSXML2.IXMLDOMNode
Dim xChild As MSXML2.IXMLDOMNode

Dim row As Integer, col As Integer

'Initialization
col = 1
row = 1


Set CPCxmlDom = New MSXML2.DOMDocument
CPCxmlDom.async = False
CPCxmlDom.validateOnParse = False

 If Not CPCxmlDom.LoadXML("C:TestCPC.xml") Then
 ' The document failed to load.

   ' Obtain the ParseError object and format
   Set xmlPE = CPCxmlDom.parseError
   With xmlPE
      strErrText = "Your XML Document failed to load" & _
        "due the following error." & vbCrLf & _
        "Error #: " & .ErrorCode & ": " & xmlPE.reason & _
        "Line #: " & .Line & vbCrLf & _
        "Line Position: " & .linepos & vbCrLf & _
        "Position In File: " & .filepos & vbCrLf & _
        "Source Text: " & .srcText & vbCrLf & _
        "Document URL: " & .URL
    End With
    MsgBox strErrText, vbExclamation
        Set xmlPE = Nothing
 Else

    Set xresult = CPCxmlDom.DocumentElement
    Set xentry = xresult.FirstChild

    For Each xentry In xresult.ChildNodes

            For Each xChild In xentry.ChildNodes

                MsgBox xChild.BaseName & " " & xChild.Text
            row = row + 1
            'col = col + 1

            Next xChild
    'row = row + 1
    col = col + 1
    Next xentry

 End If

End Sub

在Excel中,您可以從Developer-> Source導入xsd,然后從Developer-> Import導入xml,但是不會將col元素放在不同的列中,因為它們的名稱相同。 如果您有Excel 2013,也可以查看FILTERXML公式。XSLT是否也適合您?

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8"/>
    <xsl:template match="/">
        <xsl:text>refno col1    col5</xsl:text>
        <xsl:text>&#10;</xsl:text>
        <xsl:for-each select="ddsml/report/row">
                <xsl:value-of select="@refno"/>
                <xsl:text>  </xsl:text>
                <xsl:value-of select="col[1]"/>
                <xsl:text>  </xsl:text>
                <xsl:value-of select="col[5]"/>
                <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

輸出為:

$ xsltproc serverinfo.xsl serverinfo.xml
refno   col1    col5
1       *DP     52.0
2       THB     2.0
3       THC     2.0
4       THF     1.0
5       TH1     8.0
6       TH11    2.0
7       TH2     8.0
8       TH3     4.0
9       TH4     3.0
10      TH6     2.0
11      TH7     8.0
12      TH8     8.0
13      TH9     4.0
14      PHYSICAL
15
16      *YCFPOOL        4.0
17      THA     2.0
18      TH5     2.0
19      PHYSICAL
20
21      *YCF    4.0
22      THA     2.0
23      TH5     2.0
24      PHYSICAL
25
26      *KPP    40.0
27      THB     2.0
28      THC     2.0
29      TH1     6.0
30      TH11    2.0
31      TH2     6.0
32      TH3     5.0
33      TH7     6.0
34      TH8     6.0
35      TH9     5.0
36      PHYSICAL

解決了問題,解決方案按要求工作

  1. 問題1加載錯誤,通過CPCxmlDom.Load修改CPCXMLDom.LoadXML
  2. 第2期對xNode.ChildNodes中的每個xChild進行了循環

     Select Case xChild.BaseName Case "row" ActiveWorkbook.Sheets("Data").Range("B" & xlrow).Value = xChild.ChildNodes(0).Text end case 

謝謝你的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM