我可以使用VBA中的变量更新XML节点值

时间:2013-06-11 11:22:07

标签: xml excel vba

我是学习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如何处理变量,也许是一个确切语法的例子。

非常感谢您的期待。

1 个答案:

答案 0 :(得分:6)

我不知道你的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的更多信息以及您实际想要做的事情。