如何在VBA word宏中读取xml的子级

如何在VBA word宏中读取xml的子级,vba,ms-word,Vba,Ms Word,我想知道如何在VBA(Word宏)中读取“changeHistory”节点的子节点 XPath是在XML文档中定位节点的工具 和是允许您使用XPath的DOM API函数 例如: Set ver = xmlDoc.selectSingleNode("//changeHistory/ver[versionNo = '1.0']") For Each detail In ver.selectNodes("*") ActiveDocument.FormFields(detail.nodeNa

我想知道如何在VBA(Word宏)中读取“changeHistory”节点的子节点


XPath是在XML文档中定位节点的工具

和是允许您使用XPath的DOM API函数

例如:

Set ver = xmlDoc.selectSingleNode("//changeHistory/ver[versionNo = '1.0']")

For Each detail In ver.selectNodes("*")
    ActiveDocument.FormFields(detail.nodeName).Result = detail.text
Next detail

我收到以下错误,我该怎么办?运行时错误“91”对象变量或未设置块变量您是否检查了
ver
是否为
Nothing
?`正如您所说,这是问题所在,但我不知道该如何定义它。我尝试了IXMLDOMNode和IXMLDOMSelection,但不正确。。。我将Dim xmlDoc定义为新的DOMDocument26
selectSingleNode
如果XPath表达式与任何节点都不匹配,则返回
Nothing
。再次检查表达式。(我的代码不是为了复制和粘贴,而是为了给您一个解决问题的提示。当然,您必须根据自己的情况调整它。)
xmlDoc.selectNodes(“//changeHistory/ver”).length
。真的,请仔细阅读文档。是的,全部。是的,需要一段时间。那又怎么样。这是你的工作。所有这些简单的问题都将在这里得到回答。
For Each curNode In xmlDoc.ChildNodes
    If curNode.NodeType = 1 Then  ' only look at type=NODE_ELEMENT
              For I = 1 To curNode.ChildNodes.Length
                nodeName = curNode.ChildNodes(I - 1).nodeName
                nodeText = curNode.ChildNodes(I - 1).Text
                Debug.Print nodeName
                If nodeName = "changeHistory" Then


                Else
                    ActiveDocument.FormFields(nodeName).Result = nodeText
                End If
            Next
       End If
Next
Set ver = xmlDoc.selectSingleNode("//changeHistory/ver[versionNo = '1.0']")

For Each detail In ver.selectNodes("*")
    ActiveDocument.FormFields(detail.nodeName).Result = detail.text
Next detail