VBA中的XPath评估(Excel)
我有一个xml文件在Excel 2010中进行评估。该xml文件如下所示:
<Account> <Entry> <Value>5</Value> </Entry> <Entry> <Value>4</Value> </Entry> <Entry> <Value>-3.6</Value> </Entry> </Account>
我想总结适合某些特定条件的每个“条目”的所有值。 我需要的评价如下:
sum(/*/Entry[Date[starts-with(., '04') and contains(., '2014')]][Value < 0.0][not(ContraEntryID)]/Value)
我不知道如何在Excel中得到这个评估。 到目前为止我所得到的是一个总结每一个项目的select,但是还有一个更好的方法可以直接得到评价权吗? 这是我已经写的:
Private Sub getSumOfValues() Dim xmlFile As String xmlFile = "..." Dim xmlDoc As New MSXML2.DOMDocument60 Dim xmlSelection As IXMLDOMSelection xmlDoc.async = False xmlDoc.validateOnParse = True xmlDoc.Load (xmlFile) xmlDoc.setProperty "SelectionLanguage", "XPath" Set xmlSelection = xmlDoc.SelectNodes("/*/Entry[Date[starts-with(., '04') and contains(., '2014')]][Value < 0.0][not(ContraEntryID)]/Value") Dim i As Integer Dim sum As Double sum = 0 Dim val As String For i = 0 To xmlSelection.Length - 1 val = xmlSelection.Item(i).Text val = Replace(val, ".", ",") sum = sum + CDbl(val) Next i Debug.print(sum) End Sub
感谢您的帮助,Httenburg
据我所知,Msxml只支持评估返回一个节点集的XPathexpression式,没有API来评估一个XPathexpression式,该expression式返回一个像数字一样的原始值。 使用MSXML,您只需创build并执行样式表,即可执行<xsl:value-of select="sum(...)"/>
。
还有其他XPath实现,如Microsoft .NET框架,提供了一个Evaluate
方法。 你是否可以使用办公室我不知道。