XML Deserialización en VB / VBA
-
01-10-2019 - |
Pregunta
Tengo un conjunto de clases de VBA en una base de datos MS Access. Tengo una cadena XML con los datos Quiero crear nuevas clases con.
Además de establecer cada propiedad individual, ¿hay una manera fácil de deserializar el XML en mi objeto?
he visto el código usando la biblioteca biblioteca de tipos
Public Sub ISerializable_Deserialize(xml As IXMLDOMNode)
Dim tTLI As TLIApplication
Dim tInvoke As InvokeKinds
Dim tName As String
Dim tMem As MemberInfo
tInvoke = VbLet
For Each tMem In TLI.ClassInfoFromObject(Me).Members
tName = LCase(tMem.Name)
CallByName Me, tMem.Name, VbLet, xml.Attributes.getNamedItem(tName).Text
Next tMem
End Sub
pero esto no parece que el trabajo con los módulos de clase estándar. Me sale un error 429:
ActiveX Component Cannot Be Created
Puede alguien ayudarme a cabo otro sitio? Preferiría no tener que configurar cada hotel fenomenal con la mano si puedo evitarlo, algunas de estas clases son enormes!
Solución
Nunca tTLI
ejemplo, en ese código y tarde y se refieren a ella como TLI
simplemente por lo que no funcionará, el error 429 puede ser porque la biblioteca TypeInfo no se ha registrado, ¿ha agregado como una referencia?
Si ha realizado el siguiente trabajo:
Dim TLI As TLIApplication
Dim II As InterfaceInfo
Dim MI As MemberInfo
Set TLI = New TLIApplication
Set II = TLI.InterfaceInfoFromObject(Me)
For Each MI In II.Members
If MI.InvokeKind = InvokeKinds.INVOKE_PROPERTYPUT Then
Debug.Print MI.Name
TLI.InvokeHook Me, MI.Name, InvokeKinds.INVOKE_PROPERTYPUT, "PROPVALUE"
End If
Next
Se puede reemplazar con InvokeHook
CallByName
si lo desea.