5

我在 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

其他人可以帮助我吗?如果可以的话,我宁愿不必手动设置每个属性,其中一些类很大!

4

1 回答 1

3

你从来没有在那个代码中实例化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

于 2010-04-27T10:31:59.710 回答