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