当我的项目启动时,Workbook_Open事件初始化几个结构并实例化变量。在运行状态期间,用户可以更改这些变量和结构的值。
当用户关闭项目时,我想以某种方式保存这些变量的值(保存当前状态),这样用户可以重新打开项目并在关闭之前从上次保存的状态运行。
在此阶段,即使保存了Excel,当重新打开项目时,由于Workbook_Open事件,变量和结构也会重置。
更新
我调查过使用隐藏工作表并将值保存到单元格,但我不知道这对我的数据是否真的可行。
我想保存的数据是对象的字典。这些对象反过来可能包含其他对象是单值数据。如果我选择使用隐藏的工作表,我将不得不在单元格中保存每个单独的数据值,如果我想保留字典中项目的顺序,那么编写和读回将会很繁琐。
我想知道是否有办法将永久存储的数据导出到磁盘上,以及导回数据的方法?如果我的理解不足,请告诉我其他方法。
更新2
XML能为我提供可行的解决方案吗? What is the best strategy for writing my collections and objects to disk and reimporting them later?
答案 0 :(得分:2)
你必须决定一个持久性策略..我在不同情况下使用了隐藏的工作簿,SQL连接,.ini文件,甚至是平面文本文件。然后在Workbook_Open中,您必须将最后保存的数据加载到所有变量/结构中。
答案 1 :(得分:2)
就像我在评论中提到的那样,您可以将变量存储在隐藏的工作表中。看这个例子。我将变量存储在Sheets(“Temp”)中。在代码
中更改适用在ThisWorkbook中
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Temp").Range("A1").Value = MyVariable
End Sub
Private Sub Workbook_Open()
MyVariable = Sheets("Temp").Range("A1").Value
MsgBox MyVariable
End Sub
在模块中
Public MyVariable As Long
'~~> Some operation that you do with the variable
Sub Sample()
MyVariable = MyVariable + 1
End Sub
现在每次打开工作簿时,您的变量都将设置为最后一个值。