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 に答える