お世話になっております。
ExcelのVBAでのXML操作について質問をさせてください。
現在XMLを使用したデータ管理システムを作成しています。
その中でノードの削除を行おうと考えているのですが、実行時エラーが発生してしまい、抜け出せない状態になっています。
XMLデータは以下です
XML
1<?xml version="1.0" encoding="UTF-16" standalone="no"?> 2<personal_code_master xmlns="http://xml.personal-code.jp"> 3 <person> 4 <personal_code>ONMC-100001</personal_code> 5 <name>山田 太郎</name> 6 <birthday>1970/5/21</birthday> 7 <hold> 8 <hold_item> 9 <id>1</id> 10 <date>2019/11/28</date> 11 </hold_item> 12 </hold> 13 </person> 14</personal_code_master>
作成したコードは以下です
VBA
1Set xmlDocPCM = New MSXML2.DOMDocument 2xmlDocPCM.Load (ThisWorkbook.Path & "\personal_code_master.xml") 3personal_code = "ONMC-100001" 4 5Dim personNode As IXMLDOMNode 6Dim holdNode As IXMLDOMNode 7'XMLパーサを使って検索する 8Set personNode = xmlDocPCM.SelectSingleNode("personal_code_master/person[personal_code='" & personal_code & "']") 9 10personNode.RemoveChild (holdNode)
実行時、上記コードの最後の行にて「実行時エラー '438':オブジェクトはこのプロパティ又はメソッドをサポートしていません。」とエラーが吐かれます。
しかしコーディングの際、候補のメソッドにremoveChildは存在します。
但し、メソッド選択後に頭文字が大文字になってしまうのが気になるところです。
該当行を
VBA
1holdNode.ParentNode.RemoveChild (holdNode)
としても結果は同じでした。
XMLを読み込んだり、appendChildでのノードの追加処理は出来ている状況です。
ライブラリはMicrosoft XML, v3.0を参照しています。
各ソフトウェアのバージョンは以下になります
- Windows10 Enterprise LTSC
- Microsoft Office Standard 2013
- VBA: Retail 7.1.1068
ライブラリのバージョン的にremoveChildは対応していないのでしょうか?
無事目的の処理を行えるよう助言の程よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/11 20:25
2019/12/15 15:19