4

当我的项目启动时,Workbook_Open 事件会初始化几个结构并实例化变量。在运行状态期间,用户可以更改这些变量和结构的值。

当用户关闭项目时,我想以某种方式保存这些变量的值(保存当前状态),以便用户可以重新打开项目并在关闭前从上次保存的状态运行。

在这个阶段,即使保存了excel,当重新打开项目时,变量和结构也会因为Workbook_Open事件而被重置。

更新

我已经研究过使用隐藏工作表并将值保存到单元格,但我不知道这对我的数据是否真的可行。

我要保存的数据是对象的字典。这些对象又可能包含其他对象是单值数据。如果我选择使用隐藏表,我将不得不将每个数据值保存在一个单元格中,如果我想保留字典中项目的顺序,这将是繁琐的写入和读取。

我想知道是否有一种方法可以将数据导出以永久存储到磁盘上,以及一种将数据导回的方法?请让我知道替代方法或我的理解是否不足。

更新 2

XML 能否为我提供一个可行的解决方案?将我的集合和对象写入磁盘并稍后重新导入它们的最佳策略是什么?

4

2 回答 2

2

您必须决定持久性策略。我在不同情况下使用了隐藏工作簿、SQL 连接、.ini 文件甚至是纯文本文件。然后在 Workbook_Open 中,您必须将最后保存的数据加载到所有变量/结构中。

于 2012-08-08T15:42:48.213 回答
1

就像我在评论中提到的那样,您可以将变量存储在隐藏的工作表中。请参阅此示例。我将变量存储在 Sheets("Temp") 中。根据代码中的适用更改

在本工作簿中

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

现在每次打开工作簿时,您的变量都会设置为最后一个值。

于 2012-08-08T15:50:56.887 回答