Vba 存储应用程序关闭时Excel 2010宏生成的变量/对象

Vba 存储应用程序关闭时Excel 2010宏生成的变量/对象,vba,excel,collections,excel-2010,Vba,Excel,Collections,Excel 2010,我创建了一个启用宏的工作簿来进行一些容量建模。我捕获最终用户的假设和参数,然后通过几个函数传递它们。这将生成一个计划时间表的图表和表格,以便在特定的时间范围内提供容量。在宏中,我创建的对象像是类模块的“项目”或“阶段”或“单元”。其中一些是其他对象的集合。我正在尝试存储这些对象,这样当工作簿重新打开时,程序就不必每次都重新创建它们。我能想到的最简单的解决方案是使用workbook\u BeforeClose()sub将所有内容打印到一个隐藏的工作簿中,然后在workbook\u Open()上初

我创建了一个启用宏的工作簿来进行一些容量建模。我捕获最终用户的假设和参数,然后通过几个函数传递它们。这将生成一个计划时间表的图表和表格,以便在特定的时间范围内提供容量。在宏中,我创建的对象像是类模块的“项目”或“阶段”或“单元”。其中一些是其他对象的集合。我正在尝试存储这些对象,这样当工作簿重新打开时,程序就不必每次都重新创建它们。我能想到的最简单的解决方案是使用
workbook\u BeforeClose()
sub将所有内容打印到一个隐藏的工作簿中,然后在
workbook\u Open()
上初始化。不知道是否有更好的解决方案。

隐藏工作簿应该可以-我会将其设置为
xlVeryHidden
,以阻止(大多数)用户查找数据表

如果工作簿特定于特定用户,而不是电子表格,则可以使用注册表存储/检索信息

x = GetSetting(appname := "MyApp", section := "Startup", key := "Left", default := "25")
'Shorter: x = GetSetting("MyApp","Startup", "Left", 25)
SaveSetting appname := "MyApp", section := "Startup", key := "Left", setting := 50 
'Shorter: SaveSetting "MyApp","Startup", "Left", 50 
DeleteSetting "MyApp", "Startup" , "Left"
还有一个
GetAllSettings
,它将把一个完整的部分加载到一个二维数组中,数组中的设置名为
(arraypos,0)
,值为
(arraypos,1)