2016-10-19 24 views
0

いくつかのVBAを使用してデータを取得し、その後XML処理を行うためにSQLのプロシージャに渡すために作業しています。msxml2でのインラインXML要素の属性の作成VBA

残念ながら、私は要素にxml属性を付けることに問題があります。

私のコードは次のようになります。

Private Sub Tester() 

Dim objDom As Object 
Set objDom = CreateObject("msxml2.DOMDocument") 
Set objRootElem = objDom.CreateElement("Allocations") 
objDom.AppendChild objRootElem 

objRootElem.AppendChild(objDom.CreateElement("Employee55")).Text = "Test Element Value" 

MsgBox (objDom.XML) 

End Sub 

これは、このようなXML生成:

<Allocations><Employee55>Test Element Value</Employee55></Allocations> 

は、しかし、私が後だものを、このようなEmployee55元素に対する追加の属性です:

<Allocations><Employee55 EmpID="10" EmpDob="01021986">Test Element Value</Employee55></Allocations> 

私がEmployeeオブジェクトとオブジェクトを宣言しているかどうかは知っています。 bjects、私はElement.SetAttributeNodeを使用し、Attributeオブジェクトを渡すことができます。

しかし、このシナリオでは、動的であり、私はこのように動作するメモリ内の要素を持っていません。

私はこれを行う方法を探しています。これは、.Text値をEmployee55要素に追加したのと同じです。

アドバイスはありますか?

おかげで、

+0

- 作成し、取り付けに関与あまりにも多くの操作を属性 –

答えて

0

これではありません「インライン」私は考えますが、ほとんど苦労:私はあなたがそのインライン行うことができるとは思わない

Private Sub Tester2() 
    Dim Dom As Object 

    Set Dom = CreateObject("MSXML2.DOMDocument") 
    With Dom 
     With .appendChild(.createElement("Allocations")) 
      With .appendChild(Dom.createElement("Employee55")) 
       .Text = "Test Element Value" 
       .setAttribute "EmpID", "10" 
       .setAttribute "EmpDob", "01021986" 
      End With 
     End With 
     MsgBox .xml 
    End With 
End Sub