我在MS Access数据库中有一组VBA类。 我有一个xml字符串,其中包含我想要创建新类的数据。
除了单独设置每个属性外,还有一种简单的方法可以将XML反序列化为我的对象吗?
我见过使用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
但这似乎不适用于标准类模块。我收到了429错误:
ActiveX Component Cannot Be Created
其他人可以帮帮我吗?如果我可以提供帮助,我宁愿不必手动设置每个属性,其中一些类很大!
答案 0 :(得分:2)
您永远不会在该代码中实例tTLI
&然后将它称为TLI
只是因为它不起作用,429错误可能是因为TypeInfo库没有注册,你是否将它作为参考添加?
如果您这样做,以下方法将起作用:
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
如果您愿意,可以将InvokeHook
替换为CallByName
。