5

我完全是学习 XML 的新手,但可以在 Excel 2010 中使用 VBA。

在 Excel VBA 中,我CustomXMLPart在一个根下创建了一个简单的 5 个节点,类似于下面的示例:

<
  <RefTest>
      <sRef1>SomeText</sRef1>    'text
      <sRef2>XYZ234</sRef2>      'text
      <sRef3>ABC123</sRef3>      'text
      <dRef4>25/02/1953</dRef4>  'date or text?
      <iRef5>0</iRef5>           'numeric or text?
  </RefTest>
>

这工作正常,我可以使用 VBA 读取值。

我的问题是节点值(目前)作为文字(文本和数字)输入。

我希望能够从 Excel VBA 中更新这些节点值,但使用 VBA 变量的内容。

因此,例如,用户在userform文本框中输入一个值,输入一个变量(比如MyVar),我想用这个变量的内容更新节点值。一种“使用 MyVar 更新节点 iRef5”。我在网上几乎找不到像这样更新 XML 值的参考,尤其是使用变量。

这可以从 VBA 中完成吗?如果是这样,方法是什么,XML如何处理变量,也许是一个确切语法的例子。

万分感谢。

4

1 回答 1

9

我不知道你的 xml 会有什么结构。但如果只有这五个节点,也许这样的事情可能会帮助你:

Sub XMLTest()
Dim myVar As String, pathToXML As String
Dim xmlDoc As Object, xmlRoot As Object
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    pathToXML = "N:\example.xml" '<--- change the path
    Call xmlDoc.Load(pathToXML)
    Set xmlRoot = xmlDoc.getElementsByTagName("RefTest").Item(0)
    myVar = "foobar" '<--- your value
    xmlRoot.selectSingleNode("iRef5").Text = myVar
    Call xmlDoc.Save(pathToXML)
End Sub

如果这对您没有帮助,您应该提供有关您的 xml 以及您实际想要做什么的更多信息。

于 2013-06-11T12:04:31.793 回答