VBA-覆盖MSXML2.DOMDocument的XML属性

VBA-覆盖MSXML2.DOMDocument的XML属性,xml,vba,Xml,Vba,我有下面的子例程,我想循环遍历XML文档并覆盖特定节点。Excel中有一个范围,我已经完全按照需要构建了xml字符串。有没有一种简单的方法可以像覆盖文本属性一样设置xml属性?我尝试使用MSXML路径来更容易地遍历dom,但在本例中,逐行遍历文本文件可能更容易,除非有人知道一种简单的方法。我意识到我可以通过子节点循环并单独设置标记,但这还有其他挑战,而且似乎需要付出更多的努力 Sub TestXML() Dim path As String: path = Range("FilePath") D

我有下面的子例程,我想循环遍历XML文档并覆盖特定节点。Excel中有一个范围,我已经完全按照需要构建了xml字符串。有没有一种简单的方法可以像覆盖文本属性一样设置xml属性?我尝试使用MSXML路径来更容易地遍历dom,但在本例中,逐行遍历文本文件可能更容易,除非有人知道一种简单的方法。我意识到我可以通过子节点循环并单独设置
标记,但这还有其他挑战,而且似乎需要付出更多的努力

Sub TestXML()
Dim path As String: path = Range("FilePath")
Dim XDoc As Object, root As Object

Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False: XDoc.validateOnParse = False
XDoc.Load (path)

Dim Nodes As Variant: Set Nodes = XDoc.SelectNodes("//P")
Dim NodeLength As Integer: NodeLength = Nodes.Length

For Each listnode In Nodes
  //This works but does not format correctly
  listnode.text = "<P><D>Bob</D><V>Lob</V><V>law</V></P>"
  //This throws a Run-time error 450 wrong number of arguments or invalid property assignment
  listnode.xml = "<P><D>Bob</D><V>Lob</V><V>law</V></P>"
Next listnode

XDoc.Save Range("FilePath")
Set XDoc = Nothing
End Sub
subtestxml()
以字符串形式显示路径:路径=范围(“文件路径”)
Dim XDoc作为对象,根作为对象
设置XDoc=CreateObject(“MSXML2.DOMDocument”)
XDoc.async=False:XDoc.validateOnParse=False
XDoc.Load(路径)
将节点设置为变量:Set Nodes=XDoc.SelectNodes(“//P”)
将节点长度调整为整数:节点长度=节点。长度
对于节点中的每个listnode
//这可以工作,但格式不正确
listnode.text=“

BobLoblaw

” //这会引发运行时错误,参数数目错误或属性分配无效 listnode.xml=“

BobLoblaw

” 下一个列表节点 XDoc.Save范围(“文件路径”) 设置XDoc=Nothing 端接头
Hi Ken,我知道我可以使用childNodes.item()访问子元素。我的问题是,我是否可以覆盖父节点,而不必循环并更新每个子节点。在本例中,我在标签中有大约50个子节点,它们已经在Excel中正确格式化。我也在尝试这样做。