gpt4 book ai didi

VB/VBA 中的 XML 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:46 26 4
gpt4 key购买 nike

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

还有谁能帮帮我吗?如果可以的话,我宁愿不必手动设置每个属性,其中一些类非常庞大!

最佳答案

您永远不会在该代码中实例化 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

关于VB/VBA 中的 XML 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com