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 に答える