Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中合并两组对象_Vba_Excel_Object - Fatal编程技术网

在VBA中合并两组对象

在VBA中合并两组对象,vba,excel,object,Vba,Excel,Object,是否可以在VBA中组合两组对象?我试图将通过getelementsbytagname获得的两组元素组合起来 下面是这样的 Set a = oXMLFile.getElementsByTagName(tag1) Set b = oXMLFile.getElementsByTagName(tag2) c = union(a,b) 任何人都可以提供帮助?您可以编写一个XPath表达式,该表达式是两个标记名的并集,并将其馈送到中。selectNodes将为您提供一个IXMLDOMNodeList,其

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

下面是这样的

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

c = union(a,b)

任何人都可以提供帮助?

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

如果希望每个元素节点都称为“foo”,每个元素节点都称为“bar”,那么这应该是可行的(XPath中的|符号是):

注:

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

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

如果希望每个元素节点都称为“foo”,每个元素节点都称为“bar”,那么这应该是可行的(XPath中的|符号是):

注:

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

您可以在两个集合上循环并将它们添加到集合或阵列中您可以在两个集合上循环并将它们添加到集合或阵列中!|符号就像一个符咒!我还有一个简短的问题。是否可以选择标记包含特定字符串的所有节点?e、 g.我想选择标记包含“foo”的所有节点。因此,“foObar”和“xyzFOOxyz”都将被选中。请尝试设置nodeList=domDoc.SelectNodes(“/*[contains(name(),'foo')]”),如XPath 1.0规范和中所述。如果您需要不区分大小写的匹配,那么请看这是了不起的barrowc!谢谢你的帮助!谢谢你,巴罗克!|符号就像一个符咒!我还有一个简短的问题。是否可以选择标记包含特定字符串的所有节点?e、 g.我想选择标记包含“foo”的所有节点。因此,“foObar”和“xyzFOOxyz”都将被选中。请尝试设置nodeList=domDoc.SelectNodes(“/*[contains(name(),'foo')]”),如XPath 1.0规范和中所述。如果您需要不区分大小写的匹配,那么请看这是了不起的barrowc!谢谢你的帮助!
Set listOfBothTags = domDoc.selectNodes("//foo | //bar")