Excel表格到XML Vba转换器是把我所有的数据行放在一个标签作为属性?

我昨天问了这个问题,没有得到答案。 我正试图转换并将表格转换为XML。 以下是我目前有(减less儿童的数量,但整体格式是这个重复)。 我现在的问题是当我增加行数,它只是给了我这个。

<ROOT> <RANDOM> <RANDOM1 a="a2" b="b2" <RANDOM1 a='a3' b="b3" > <COOKIE> <ORANGE c="c2" d="d2" <ORANGE c="c3" d="d3"/> </COOKIE> </RANDOM1> <RANDOM> <ROOT> 

我想这个格式。

 <ROOT> <RANDOM> <RANDOM1 a="a2" b="b2"> <COOKIE> <ORANGE c="c2" d="d2"/> </COOKIE> </RANDOM1> <RANDOM1 a='a3' b="b3" > <COOKIE> <ORANGE c="c3" d="d3"/> </COOKIE> </RANDOM1> <RANDOM> <ROOT> 

基本上,我怎么让数据连续出现,而不是一起在一行? 我的代码如下。

 Sub ToXML() MyFile = "data.xml" fnum = FreeFile() Dim n As Integer n = 2 'Number of DATA rows Dim m As Integer m = 104 ' Number of columns Print #fnum, "<ROOT>" Print #fnum, " < RANDOM >" For i = 2 To n + 1 Print #fnum, " <RANDOM1 "; For j = 1 To 39 Print #fnum, Cells(1, j).Value & "=""" & Cells(i, j).Value & """ "; Next j Next i Print #fnum, ">" Print #fnum, " < COOKIE >" For i2 = 2 To n + 1 Print #fnum, " <ORANGE "; For j2 = 40 To 42 Print #fnum, Cells(1, j2).Value & "=""" & Cells(i, j2).Value & """ "; Next j2 Next i2 Print #fnum, "/>" Print #fnum, " <COOKIE>" Print #fnum, " RANDOM1>" Print #fnum, " </RANDOM>" Print #fnum, "</ ROOT >" 'Close root node 

在写入行之前,您应该使用数组并创build每个属性:

 Dim headers(), data(), attributes1(), attributes2(), attr$, r&, c& ' load the headers and data to an array ' headers = Cells(1, 1).Resize(1, 42).value data = Cells(1, 2).Resize(2, 42).value ' set the size for the attributes ' ReDim attributes1(1 To 39) ReDim attributes2(40 To 42) ' open file and print the header ' Open "C:\temp\output.xml" For Output As #1 Print #1, "<ROOT>" Print #1, " <RANDOM>" ' iterate each row ' For r = 1 To UBound(data) ' iterate each column ' For c = 1 To UBound(data, 2) ' build each attribute ' attr = headers(1, c) & "=""" & data(r, c) & """" If c <= 39 Then attributes1(c) = attr Else attributes2(c) = attr End If Next ' print the row ' Print #1, " <RANDOM1 " & Join(attributes1, " ") & " >" Print #1, " <COOKIE>" Print #1, " <ORANGE " & Join(attributes2, " ") & " />" Print #1, " </COOKIE>" Print #1, " </RANDOM1>" Next ' print the footer and close ' Print #1, " </RANDOM>" Print #1, "</ROOT>" Close #1