5

私は XML について学ぶのはまったくの初心者ですが、Excel 2010 の VBA には問題ありません。

Excel VBA ではCustomXMLPart、以下の例のように、1 つのルートの下に 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) に入力すると、この変数の内容でノードの値を更新したいとします。一種の「ノード iRef5 を MyVar で更新する」。このような XML 値の更新、特に変数の使用に関する Web での参照はほとんど見つかりません。

これはVBA内から実行できますか? もしそうなら、アプローチは何ですか、XMLは変数をどのように扱いますか、そしておそらく正確な構文の例を教えてください。

どうぞよろしくお願いいたします。

4

1 に答える 1

9

あなたのxmlがどのような構造になるかわかりません。しかし、これらの 5 つのノードだけの場合は、次のようなものが役立つかもしれません。

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 に答える