2013-07-12 77 views
0

我正在尋找生成一個宏的宏,並希望得到一些方向。我想要做的是從5個XML文件中獲取數據,並將它們放入一個新的工作簿中,然後以線形圖格式顯示結果數據。在XML文件中的數據是所有5個文件均相同,並且在下面顯示的格式:用於XML數據修改的Excel宏

<Sample Secs="25313"> 
    <Pout>215280</Pout> 
</Sample> 
<Sample Secs="25562"> 
    <Pout>233627</Pout> 
</Sample> 

其中,在Excel中打開一個XML表時,被顯示爲:

25313 215280 
25562 233627 

標題分別爲「Secs」和「Pout」。 「列」列在列A中的所有5個文件之間是共同的,然後唯一數據位於列B中的「Pout」列中。對於列B,每個文件中將有大約1500個數據點。我想要完成的是打開所有5個XML文件,從每個文件中提取唯一數據,然後繪製數據圖。圖形之前,我想新的Excel工作簿的目光,格式如下:

Secs Pout1 Pout2 Pout3 Pout4 Pout5 

與「秒]」從任何5個文件的到來(因爲它是常見的)數據和B列數據是放在相應的Pout#列中。

有沒有辦法讓Excel VBA做到這一點,以及我將如何設置這個呢?

+0

你到目前爲止做了什麼編碼? – whytheq

回答

0

請參閱this MSDN page瞭解更多信息。

Option Explicit 

    Private Sub LoadXmlData() 

    Dim xmlDoc As New DOMDocument60 
    Dim sSecs As String, sPout As String 
    Dim iNodes As Integer, i As Integer, t As Integer 
    Dim sPath1 As String, sPath2 As String, sPath3 As String, _ 
     sPath4 As String, sPath5 As String, sTempPath As String 

    Range("A1").Value2 = "Secs" 
    'Set the file paths of your xml documents here 

    sPath1 = "" 
    sPath2 = "" 
    sPath3 = "" 
    sPath4 = "" 
    sPath5 = "" 

    For t = 0 To 4 
     Select Case t 
      Case 0 
       sTempPath = sPath1 
      Case 1 
       sTempPath = sPath2 
      Case 2 
       sTempPath = sPath3 
      Case 3 
       sTempPath = sPath4 
      Case 4 
       sTempPath = sPath5 
     End Select 

     xmlDoc.Load (sTempPath) 
     iNodes = xmlDoc.DocumentElement.ChildNodes.Length 

     'Fill in the first column with the values from the attribute Secs 
     'Only do it once because the values are the same in each file 
     If t = 0 Then 
      For i = 0 To iNodes - 1 
       Range("A" & i + 2).Value2 = xmlDoc.DocumentElement.ChildNodes.Item(i).Attributes.Item(0).Text 
      Next i 
     End If 

     'Fill in the Pout column 
     Cells(1, t + 1).Value2 = "Pout" & t + 1 
     For i = 0 To iNodes - 1 
      Cells(i + 2, t + 1).Value2 = xmlDoc.DocumentElement.ChildNodes.Item(i).nodeTypedValue 
     Next i 
    Next t 

End Sub