从Excel表中读取数据并使用vbamacros将其输出到xml?

我有一个类似于下面的格式的Excel表中的一些数据。

Colum1_Heading Column2_Heading a 1 b 2 c 3 

我试图将这个表中的数据转换为XML,我将总是有相同数量的列,但行数不确定。

XML格式是这样的

 <?xml version="1.0" encoding="utf-8"?> <root> <tag1> <tag2> a - 1, b - 2, c - 3 </tag2> </tag1> </root> 

所以我认为这应该相当简单。 到目前为止,我已经开始编写一些代码来创build一个可写的string,然后我将写入一个新的XML文件,但是对于VBA来说,我还是个新手,所以我现在仍然在研究一大堆networking。 我input了标题和开始和结束标记,因为这些标记始终是相同的。 我的问题是如何读取表格的行,并以上述格式将它们写入XML。 任何帮助,将不胜感激。 请让我知道如果你需要任何额外的信息。

这应该让你开始。 添加对MSXML2的引用:

 Sub Test() With New MSXML2.DOMDocument60 Dim root As IXMLDOMNode Set root = .createElement("root") Dim tag1 As IXMLDOMNode Set tag1 = .createElement("tag1") Dim tag2 As IXMLDOMNode Set tag2 = .createElement("tag2") tag2.Text = ReadXmlContentFromWorksheet '"a - 1,b - 2,c - 3" tag1.appendChild tag2 root.appendChild tag1 .appendChild .createProcessingInstruction("xml", "version=""1.0"" encoding=""utf-8""") Set .DocumentElement = root '.Save "test.xml" Debug.Print .XML End With End Sub 

输出:

 <?xml version="1.0"?> <root><tag1><tag2>a - 1,b - 2,c - 3</tag2></tag1></root> 

请注意,垂直空格是不相关的


ReadXmlContentFromWorksheet函数看起来像这样:

 Private Function ReadXmlContentFromWorksheet() As String Dim result As String Dim lastRow As Long lastRow = MyDataSheet.Range("A" & MyDataSheet.Rows.Count).End(xlUp).Row Dim currentRow As Long For currentRow = 1 To lastRow result = result & MyDataSheet.Cells(currentRow, 1).Value & " - " _ & MyDataSheet.Cells(currentRow, 2).Value result = IIf(currentRow = lastRow, vbNullString, ",") Next ReadXmlContentFromWorksheet = result End Function