【发布时间】:2011-06-15 02:38:53
【问题描述】:
所以我使用 VBA(不是选择)来做一些相当重要的编程,发现它是一场噩梦。通常我只是使用序列化将类/对象转储到磁盘然后将其读回,但我不能在这里这样做,除非我编写自己的序列化函数,这基本上就是我在这里问如何做的。
我有课
[Node.cls]
Public pictureName As String
Public tagGroup As String
' Collection of Node objects
Public children As New Collection
Public isOverViewScreen As Boolean
' Collections of strings
Public overViewScreenWellNames As New Collection
Public overViewScreenWellType As New Collection
Public overViewScreenOpenPictureName As New Collection
它基本上是树结构中的一个节点,例如一个具有一组子节点的节点,这些子节点构成一棵树。
将此结构转储到平面文件并读入的最佳方法是什么,有什么提示吗?
我在想我可以为我的所有节点添加一个父链接,然后递归地访问树,以便将它们写入 txt 文件,然后以相同的方式读回它,可能不是最有效的,但我有一个不错的四核机器在这里。有没有更简单或更有效的方法来做到这一点?
【问题讨论】:
-
我知道这是旧的,但只是偶然发现并想给任何未来的访客留下小费。您可以在例如 C# 中创建一个可序列化的类(dll 库)并添加 XML 结构来表示类(基于节点)。然后,您可以在 VBA 中引用该库。创建类的实例并使用属性来设置类、属性、值。在您的 C# 类中公开一个 Serialize() 方法并从 VBA 调用它来序列化该类。然后重新启动 Excel,创建库的新实例并调用 DeSerialize() 方法来检索实例。当我有空时,我会写一个完整的解决方案。
-
谢谢,这听起来像是一个更好的解决方案。
标签: vba serialization tree deserialization