把XML数据转成Excel表格,是日常数据处理里很常见的需求。借助Excel自带的VBA环境,我们可以写一小段宏脚本,自动读取XML文件内容并填到工作表里,不用手动复制粘贴字段。

一、基础版:读取简单XML到Excel
下面这段代码适合没有复杂嵌套、每个节点都直接包含文本的XML。把它放进模块里,修改文件路径就能用。
Sub XMLToExcelBasic()
Dim xmlDoc As Object
Dim nodes As Object
Dim i As Integer
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.Load "C:testdata.xml"
Set nodes = xmlDoc.SelectNodes("//record")
i = 1
For Each n In nodes
Cells(i, 1).Value = n.SelectSingleNode("name").Text
Cells(i, 2).Value = n.SelectSingleNode("age").Text
i = i + 1
Next
MsgBox "转换完成"
End Sub
二、进阶版:处理带属性的XML
如果XML节点用属性存数据,可以用getAttribute方法取出来,再写到对应的列。
Sub XMLToExcelWithAttr()
Dim xmlDoc As Object
Dim nodes As Object
Dim i As Integer
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.Load "C:testuser.xml"
Set nodes = xmlDoc.SelectNodes("//user")
i = 1
For Each n In nodes
Cells(i, 1).Value = n.getAttribute("id")
Cells(i, 2).Value = n.getAttribute("name")
i = i + 1
Next
End Sub
三、使用步骤
- 打开Excel,按Alt加F11进入VBA编辑器
- 点击插入,选择模块,把上面的代码粘贴进去
- 修改Load里的文件路径为你自己的XML地址
- 按F5运行宏,数据就会出现在当前表
四、注意事项
代码中用到的<record>、<user>等标签名要根据实际XML结构改。如果文件编码不是UTF-8,可能在VBA里乱码,建议先转成标准UTF-8保存。
小提示:用CreateObject创建的对象在大部分Windows电脑都能直接用,不需要额外引用库。
上面这些脚本都是可以直接复制使用的,遇到不同结构的XML,只要改一下节点路径和单元格列号就行。