UserForm Daten in XML Datei speichern

medico

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein UserForm erstellt (nicht für Excel sondern in einem CAD Programm) mit dem ich Daten die dort eingetragen werden in eine XML Datei geschrieben werden und auch wieder ausgelesen werden.

Da klappt auch super.

Nun ist es so das ich ein weiteres Feld benötigte, das ist soweit kein Problem wenn noch keine XML Datei besteht, aber sobald ich das für eine Datei mache in der schon eine XML Datei besteht, kommt es zu einer Fehlermeldung. (Ist glaube ich auch klar, weil in der vorhanden XML Datei, ja dieses Feld nicht vorhanden ist)

Da meine Kenntnisse nun nicht so gut sind, weiß ich nicht was ich machen kann/soll damit das auch bei bestehender XML Datei funktioniert. Vielleicht könnt Ihr mir helfen.

Hier mal mein Code:

Private Sub UserForm_Initialize()
Code:
Dim xmlDocPath As String
Const CurrentFolder As String = "$(_dgndir)"
ropath = "xml\data.xml"
xmlDocPath = ActiveWorkspace.ExpandConfigurationVariable(CurrentFolder) & _
ropath

Dim xmlDoc As Object
Dim xmlElm As Object

Set xmlDoc = CreateObject("MSXML2.DOMDocument")

xmlDoc.Load xmlDocPath

'MsgBox xmlDoc.XML


If xmlDoc.XML = "" Then
Me.ro01 = ""
Me.ro02 = ""
Me.ro03 = ""
Me.ro04 = ""

Else
Set xmlElm = xmlDoc.getElementsByTagName("R01").Item(0)
Me.ro01 = xmlElm.Text
Set xmlElm = xmlDoc.getElementsByTagName("R02").Item(0)
Me.ro02 = xmlElm.Text
Set xmlElm = xmlDoc.getElementsByTagName("R03").Item(0)
Me.ro03 = xmlElm.Text
Set xmlElm = xmlDoc.getElementsByTagName("R04").Item(0)
Me.ro04 = xmlElm.Text

End If

End Sub
Code:
Private Sub CommandButton1_Click()

Dim xmlDocPath As String
Const CurrentFolder As String = "$(_dgndir)"
'ropath = "xml\data.xml"
ropathfolder = "xml"
'xmlDocPath = ActiveWorkspace.ExpandConfigurationVariable(CurrentFolder) &
' ropath
xmlDocPath = ActiveWorkspace.ExpandConfigurationVariable(CurrentFolder) & _
ropathfolder

If Len(Dir(xmlDocPath, vbDirectory)) = 0 Then
MkDir xmlDocPath
End If

xmlDocPath = xmlDocPath & "\data.xml"


Dim xmlDoc As Object
Dim xmlElm As Object
Dim txtNode As Object
Dim pInstr As Object

Set xmlDoc = CreateObject("MSXML2.DOMDocument")

Set xmlElm = xmlDoc.CreateElement("UFdata")
xmlDoc.DocumentElement = xmlElm

Set pInstr = xmlDoc.createProcessingInstruction("xml", "version=""1.0""" & _
"encoding=""UTF-8""")
xmlDoc.InsertBefore pInstr, xmlDoc.DocumentElement

Set xmlElm = xmlDoc.CreateElement("R01")
Set txtNode = xmlDoc.createTextNode(Me.ro01)
xmlElm.appendChild txtNode
xmlDoc.DocumentElement.appendChild xmlElm

Set xmlElm = xmlDoc.CreateElement("R02")
Set txtNode = xmlDoc.createTextNode(Me.ro02)
xmlElm.appendChild txtNode
xmlDoc.DocumentElement.appendChild xmlElm

Set xmlElm = xmlDoc.CreateElement("R03")
Set txtNode = xmlDoc.createTextNode(Me.ro03)
xmlElm.appendChild txtNode
xmlDoc.DocumentElement.appendChild xmlElm

Set xmlElm = xmlDoc.CreateElement("R04")
Set txtNode = xmlDoc.createTextNode(Me.ro04)
xmlElm.appendChild txtNode
xmlDoc.DocumentElement.appendChild xmlElm


xmlDoc.Save xmlDocPath

End Sub
Danke schon mal und Gruß
Andreas
 
Zurück