Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用VBA中的变量更新XML节点值吗_Xml_Excel_Vba - Fatal编程技术网

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

我可以使用VBA中的变量更新XML节点值吗,xml,excel,vba,Xml,Excel,Vba,我是学习XML的新手,但在Excel2010中使用VBA还行 在Excel VBA中,我创建了一个简单的CustomXMLPart,在单个根目录下有5个节点,类似于下面的示例: < <RefTest> <sRef1>SomeText</sRef1> 'text <sRef2>XYZ234</sRef2> 'text <sRef3>ABC123</sRef3&

我是学习XML的新手,但在Excel2010中使用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>
>
<
SomeText的文本
XYZ234'文本
ABC123'文本
1953年2月25日“日期还是文本?”?
0'是数字还是文本?
>
这一切正常,我可以读取值回使用VBA

我的问题是节点值(目前)是以文本(文本和数字)的形式输入的

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

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

这可以从VBA内部完成吗? 如果是的话,方法是什么,XML是如何处理变量的,请举一个确切语法的例子


非常感谢。

我不知道您的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
Sub-XMLTest()
Dim myVar作为字符串,pathToXML作为字符串
Dim xmlDoc作为对象,xmlRoot作为对象
设置xmlDoc=CreateObject(“MSXML2.DOMDocument”)

pathToXML=“N:\example.xml”'非常感谢MiVoth。经过一点调整,这让我走了。