|
各位老师好,本人是从事生产管理的,所以经常要接触到BOM相关的文件,最近在学习yiyiyiczexcelhome中有关BOM的部分内容其中的第36楼使用了XML dom来处理BOM,本人觉得非常适合我的工作需要,但有如下代码中的红色部分不明白是什么意思,还请哪位老师解释下,最好能给整个代码加上注释,这样也方便我们这些水平差的,谢谢了:
Sub tt02()
Dim Arr, Brr
Dim Tt As New MSXML2.DOMDocument, Rt As IXMLDOMElement, Ndt As IXMLDOMElement, Ndtt As IXMLDOMElement
Dim T As New MSXML2.DOMDocument, R As IXMLDOMElement, Nd As IXMLDOMElement
Arr = Range("a1").CurrentRegion
Set Rt = Tt.createElement("root")
Tt.appendChild Rt
For i = 2 To UBound(Arr)
Set Ndt = Tt.createElement(Arr(i, 1))
Rt.appendChild Ndt
Set Ndtt = Tt.createElement(Arr(i, 2))
Ndtt.setAttribute "numb", Arr(i, 3)
Ndt.appendChild Ndtt
Set Ndt = Nothing: Set Ndtt = Nothing: Set Txtt = Nothing
Next i
Set R = T.createElement("rt")
T.appendChild R
Set Nd = T.createElement(Arr(2, 1))
Nd.setAttribute "numb", 1
Nd.setAttribute "id", 0
R.appendChild Nd
an = 0
Do
Set tlist = T.selectNodes("//*[@id=" & an & "]")
If tlist.Length = 0 Then Exit Do
For Each tls In tlist
Set temp = Tt.selectNodes("/*/" & tls.nodeName)
For Each tep In temp
Set cd = tep.childNodes.Item(0).CloneNode(True)
cd.setAttribute "id", an + 1
tls.appendChild cd
Set cd = Nothing
Next
Next
an = an + 1
Loop
Set abc = T.selectNodes("//*[@*]")
ReDim Brr(1 To abc.Length, 1 To 3)
nn = 1
For Each Ac In abc
Brr(nn, 1) = Ac.Attributes(1).nodeValue
Brr(nn, 2) = Ac.nodeName
Brr(nn, 3) = Ac.Attributes(0).nodeValue
nn = nn + 1
Next
Range("m1").Resize(UBound(Brr), UBound(Brr, 2)) = Brr
End Sub
|
|