如何存储自定义对象以便在VBA代码终止后使用



我有简单的类模块,在我的 VBA 项目中充当自定义对象。这些属性是简单的变量类型或等同于简单的变量类型(字符串/长整型/布尔值等(,尽管某些属性是简单变量的其他类。当我的项目中的一个代码线程完成执行并且这些对象填充了信息时,我希望能够保存这些对象,以便以后由不同的代码线程使用(在同一工作簿中(。

出于这个原因,Document.Properties 似乎是保存数据的好地方,但它只接受简单的变量类型。在javascript中,我只会JSON.stringify("对象"(,我会很好,但当然VBA不能很好地与JSON配合使用。

基本上,我要么正在寻找一种方法将我的对象转换为字符串以存储在 Document.Properties 中,要么正在寻找一种不同的方法来存储我可能没有遇到过的对象。除非有某种方法可以使用对象的作用域来保持对象的活动状态,直到文档关闭,比如说?

如果没有任何对象需要超过主机应用程序的寿命,则无需研究任何类型的序列化或持久性机制。

只需在任何标准模块的(declarations)部分中保留对要在全局范围内"保持活动"的对象的引用:

Option Explicit
Option Private Module
Public GlobalThing1 As Something
Public GlobalThing2 As Something
'...

不是最漂亮的,但是如果所有这些"全局事物"都是相关的,您可以将它们全部包装到一个类中,并且只需要包装器对象的单个全局实例。

只要您不通过执行End指令或退出主机应用程序来破坏该上下文,此作用域中的对象就会保留在执行上下文中。

请注意,通常,对象/变量范围应尽可能严格 - 明智地使用全局状态。

最新更新