VBAには値型の変数の中身をファイルに保存する機能が備わっています。
VBScriptでは使えない、構文がちょっと面倒といった欠点はありますが、簡単な情報の保存には使える気がします。
使用するもの
今回使用するのは以下のステートメントです。
Open
Open
はファイル操作を開始するためのステートメントです。
Mode
としてBinary
を指定することで、バイナリデータの入出力が可能になります。
Put
Put
は変数をファイルに書き出すためのステートメントです。
値型であれば、ユーザー定義型や配列も保存することが出来ます。
Get
Get
はファイルの中身を変数に読み込むためのステートメントです。
PutとGetは対として使用します。
サンプルコード
tempフォルダに適当なファイルを作って保存し、そのファイルからデータを読み込むサンプルです。
コードにもあるように、数字・文字列・日付といった値型の要素であれば問題無く保存、読み込みが可能です(二次元配列も問題無く保存することが出来ます)。
Sub VariableSaveTest()
Dim tmpPath As String
tmpPath = Environ$("tmp") & "\vba_temp.bin"
Dim saveData As Variant
saveData = Array(1024, "abc", Now)
'保存
SaveVariable tmpPath, saveData
'読込
Dim loadData As Variant
loadData = LoadVariable(tmpPath)
Stop '中身確認
End Sub
Sub SaveVariable(filePath As String, var As Variant)
Dim fNo%: fNo = FreeFile()
Open filePath For Binary As fNo
Put fNo, , var
Close fNo
End Sub
Function LoadVariable(filePath As String) As Variant
Dim fNo%: fNo = FreeFile()
Open filePath For Binary As fNo
Get fNo, , LoadVariable
Close fNo
End Function