Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <rng1>
- <col1>
- <row1>A</row1>
- <row2>B</row2>
- <row3>C</row3>
- <row4>D</row4>
- <col2>
- <col1>
- <row1>E</row1>
- <row2>F</row2>
- <row3>G</row3>
- <row4>H</row4>
- <col2>
- </rng>
- ' get a list of the col elements (thi sits in a loop to go through them all)
- Set oXMLColNodeList = oXMLDoc.selectNodes("//saveStates/rng/*")
- ' Lop through each column
- For colNum = 1 To oXMLColNodeList.Length
- ' get all the row nodes for that coulmn
- Set oXMLRowNodeList = oXMLDoc.selectNodes("//saveStates/rng"/col" & colNum & "/*")
- ' loop through all the row nodes
- For rowNum = 1 To oXMLRowNodeList.Length
- ' get the node to do something with it
- Set oXMLNode = oXMLDoc.selectSingleNode("//saveStates/rng/col" & colNum & "/row" & rowNum)
- next rowNum
- next colNum
- Public Function RecordsetFromXMLDocument(XMLDOMDocument As DOMDocument) As Recordset
- Dim oRecordset As ADODB.Recordset
- dim destRange as range
- set destrange=range("B2")
- Set oRecordset = New ADODB.Recordset
- oRecordset.Open XMLDOMDocument 'pass the DOM Document instance as the Source argument
- Set RecordsetFromXMLDocument = oRecordset 'return the recordset
- destRange.CopyFromRecordset oRecordset
- Set oRecordset = Nothing
- End Function
- Option Explicit
- Sub ReadRows()
- 'Declarations
- Dim oXMLDoc As Object ' XML document (object)
- 'Dim oXMLColNodeList As Object ' you don't need this list any more !
- Dim oXMLRowNodeList As Object ' needed node list
- Dim oXMLNode As Object ' single node within this list
- Dim xPE As Object ' ParseError object
- Dim strErrText As String ' Error message
- Dim sFileName As String ' user defined file path
- ' =================================
- ' 0. User defined File Name <== !
- ' =================================
- sFileName = ThisWorkbook.Path & "datatest.xml"
- ' =================================
- ' 1. XML Declaration oXMLDoc
- ' =================================
- ' Set oXMLDoc = New MSXML2.DOMDocument60 ' Early Binding
- Set oXMLDoc = CreateObject("Msxml2.DOMDocument.6.0") ' Late Binding
- ' XPath, Validation
- oXMLDoc.setProperty "SelectionLanguage", "XPath"
- oXMLDoc.validateOnParse = False
- ' =================================
- ' 2. Load XML File
- ' =================================
- If oXMLDoc.Load(sFileName) Then
- MsgBox sFileName & " successfully loaded"
- Else
- ' Set ParseError Object
- Set xPE = oXMLDoc.parseError
- With xPE
- strErrText = "Load Error " & .ErrorCode & " XML File " & vbCrLf & _
- Replace(.URL, "file:///", "") & vbCrLf & vbCrLf & _
- xPE.reason & _
- "Source Text: " & .srcText & vbCrLf & vbCrLf & _
- "Line No: " & .Line & vbCrLf & _
- "Line Pos: " & .linepos & vbCrLf & _
- "File Pos: " & .filepos & vbCrLf & vbCrLf
- End With
- MsgBox strErrText, vbExclamation
- Set xPE = Nothing
- Set oXMLDoc = Nothing
- 'Stop procedure
- Exit Sub
- End If
- ' =================================
- ' 3 Set only one Nodelist
- ' =================================
- Set oXMLRowNodeList = oXMLDoc.DocumentElement.SelectNodes("rng/*/*")
- ' =================================
- ' 4. loop through all (row) nodes
- ' =================================
- For Each oXMLNode In oXMLRowNodeList
- Debug.Print oXMLNode.Text
- ' read in ...
- Next oXMLNode
- ' 5. terminate oXMLDoc
- Set oXMLDoc = Nothing
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement