掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBAでXMLの要素を追加するときの処理方法 (ID:101610)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつも勉強させていただいています。 ありがとうございます。 Excel2007上のVBAで下記のようなXML処理を行いたいのですが、 求める結果と違う処理がされてしまいます。 何卒、ご指導をお願いできませんでしょうか・・・? ■やりたいこと(処理前) <?xml version="1.0" encoding="UTF-8" ?> <タグ1 属性11="abc" 属性12="w"> <タグ2> <タグ3 属性31="1"> <タグ5 属性51="abc"/> '←[タグ5]の[属性51]が[1000]だったら追加処理 <タグ5 属性52="def"/> </タグ3> <タグ4 属性41="2"> <タグ5 属性51="1000"/> '←[タグ5]の[属性51]が[1000]だったら追加処理 <タグ5 属性52="1100"/> </タグ4> </タグ2> </タグ1> ↓ ■やりたいこと(処理後) <?xml version="1.0" encoding="UTF-8" ?> <タグ1 属性11="abc" 属性12="w"> <タグ2> <タグ3 属性31="1"> <タグ5 属性51="abc"/> '←[タグ5]の[属性51]が[1000]だったら追加処理 <タグ5 属性52="def"/> </タグ3> <タグ4 属性41="2"> <タグ5 属性51="1000"/> '←[タグ5]の[属性51]が[1000]だったら追加処理 <タグ5 属性52="1100"/> <タグ6 属性61="abcdef"/> '←ここに追加したい </タグ4> </タグ2> </タグ1> ■求める結果と違う処理 Sub Macro1 Dim DomXmlDocument As MSXML2.DOMDocument Set DomXmlDocument = New MSXML2.DOMDocument DomXmlDocument.Load("test.xml") Dim namedNodeMap As IXMLDOMNamedNodeMap Dim MyNode As IXMLDOMNode For Each Node In DomXmlDocument.SelectNodes("//タグ5/@*") If Node.NodeValue = "1000" Then Set MyNode = DomXmlDocument.createNode(2, "属性61", "abcdef") Set namedNodeMap = DomXmlDocument.DocumentElement.ChildNodes.Item(4).Attributes namedNodeMap.setNamedItem MyNode End If Next DomXmlDocument.Save ("test_after.xml") End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.