VBA:使用UCase内置属性

时间:2012-10-05 11:47:38

标签: excel-vba vba excel

我在下面的代码行中使用了UCase - >   // xmlTag1doc有一个xml

    Dim xmlTag1doc As IXMLDOMElement,Dim ParentDoc As MSXML2.DOMDocument
    set xmlTag1Doc = ParentDoc.DocumentElement.SelectSingleNode("//Root//XP")

   if(xmlTag1Doc .SelectNodes("//tag1[@ID = 1 and @Name='" & strname & "']").Length >0)

在这里,我必须使用“UCase”来检查我的代码行中的UCase(@Name)= UCase(strname)。 可能吗? 请提出一些答案。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用以下

if(xmldoc.SelectNodes("//tag1[translate(@Name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') = '" & strings.UCase(strname) & "']").Length >0) 

修改

在这种情况下,维度ParantXMLDoc as MSMXL2.DOMDocumentXX。 (其中 XX 是任何版本等于或高于40)。由于xmlDoc是ParantXMLDoc中的一个节点,因此它将与ParentXMLDoc具有相同类型的DOM版本。

为什么选择DOMDocument40或Highet? 因为4.0版是第一个完全支持XPath 1.0的DOM版本。在该版本之前,不支持每个Xpath 1.0功能。例如Translate()

<强>翻译(字符串1 ,* FINDSTRING *, replaceString 此函数搜索 String1 并将任何 findString 替换为 replaceString 。 在w3org网站上,您可以获得更多信息。检查链接:Xpath - w3Org


小心点:

由于您在此Xpath //中使用xmlDoc.SelectNodes("//tag1[@Name='" & strname & "']"),因此您正在查询tag1内的所有ParentXMLDoc元素。不只是xmlDoc中预先选定的元素内部。