在VBA中合并两组对象

时间:2015-11-21 16:22:53

标签: vba excel-vba object excel

是否可以在VBA中组合两组对象?我试图将通过getelementsbytagname获得的两组元素组合起来

如下所示

Set a = oXMLFile.getElementsByTagName(tag1)
Set b = oXMLFile.getElementsByTagName(tag2)

c = union(a,b)

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以编写一个XPath表达式,它是两个标记名称的并集,并将其提供到.selectNodes这将为您提供一个IXMLDOMNodeList,其中包含具有任一标记的所有元素节点。

如果你想要每个名为“foo”的元素节点和每个名为“bar”的元素节点,那么这应该可行(|符号是XPath中的union operator):

Set listOfBothTags = domDoc.selectNodes("//foo | //bar")

注意:

  • 节点将按照它们在文档中出现的顺序返回,因此您将在整个集合中混合使用两个标记的节点。在XPath 2.0及更高版本中。这可以通过使用,运算符来避免,但MSXML2仅支持XPath 1.0
  • 使用//这样效率不高,因此在较大的文档中使用更具体的查询(例如“/ fee / fi / foo | / fee / fi / bar”)
  • DOM文档应声明为“DOMDocument60”(早期绑定)或创建为“DOMDocument.6.0”(后期绑定)旧版本的MSXML2 DOMDocument使用XSL Patterns作为查询语言而不是XPath,但您可以覆盖此正如here
  • 所述