【问题标题】:Can I update an XML node value using a variable in VBA我可以使用 VBA 中的变量更新 XML 节点值吗
【发布时间】:2013-06-11 20:04:31
【问题描述】:

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

万分感谢。

【问题讨论】:

    标签: xml excel vba


    【解决方案1】:

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

    【讨论】:

    • 非常感谢 MiVoth。通过一些调整,这让我开始了。
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多