2013-07-12 1 views
0

Я ищу для создания макроса excel и надеялся получить какое-то направление. То, что я пытаюсь сделать, - это взять данные из 5 XML-файлов и поместить их в новую книгу, а затем нарисовать полученные данные в формате графиков. Данные в файлах XML является одинаковым во всех 5 файлов и в формате изображенную ниже:Excel Macro для XML Data Modification

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

Который, при открытии в Excel в виде таблицы XML, получает отображается как:

25313 215280 
25562 233627 

с заголовками «Secs» и «Pout», соответственно. Столбец «Secs» является общим для всех 5 файлов в столбце A, а затем уникальные данные находятся в столбце «Pout», который находится в столбце B. В столбце B. будет около 1500 точек данных. Я бы хотел, чтобы все 5 файлов XML были открыты, уникальные данные вытащили из каждого файла, а затем графические данные. До построения графиков, я хотел бы, чтобы новая книга Excel, чтобы выглядеть быть отформатирован следующим образом:

Secs Pout1 Pout2 Pout3 Pout4 Pout5 

с данными для «Secs» исходя из любого из 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