Ho un set di classi VBA in un database MS Access. Ho una stringa xml con i dati con cui voglio creare nuove classi.Deserializzazione XML in VB/VBA
Altro che impostare ciascuna proprietà singolarmente, esiste un modo semplice per deserializzare l'XML nel mio oggetto?
Ho visto il codice che utilizza la libreria TypeLib
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
ma questo non sembra funzionare con i moduli di classe standard. Ottengo un errore 429:
ActiveX Component Cannot Be Created
Qualcun altro può darmi una mano? Preferirei non dover impostare ogni proprietà a mano se posso aiutarlo, alcune di queste classi sono enormi!
Le classi private in un database di Access non sono incluse in nessuna libreria di tipi pubblici, quindi non penso che funzionerà mai, anche con gli errori corretti come suggerito. Non credo che 'InterfaceInfoFromObject (Me)' possa avere successo perché le interfacce rilevanti per 'Me' non sono pubbliche. – MarkJ
InterfaceInfoFromObject funziona tramite IDispatch :: GetTypeInfo() che funziona in Access per me .. come a come .. chi lo sa? –
Grazie Alex. Ancora non funziona, non funziona sul Imposta TLI = Nuova richiesta TLIA riga con lo stesso errore. Ho fatto riferimento al riferimento typelib, (tlbinf32.dll) è quello giusto? Ben. – oharab