INDEX
Putの概要
ファイル操作 VBAの予約語 | ||
Put 概要 Put ステートメントは、VBAでファイルにバイナリデータや数値、文字列を保存するために使用されます。主に わかりやすく説明 Put は、「指定した位置にデータを書き込んでね!」という命令です。テキストではなく、数値やバイナリデータを直接保存するのに使われます。 |
||
|
Put の基本的な使い方(数値の保存)
Put を使って、数値データをバイナリファイルに保存する基本的な例です。
Sub SaveNumber()
Dim fileNum As Integer
Dim myNumber As Integer
myNumber = 12345
fileNum = FreeFile ' 使用可能なファイル番号を取得
Open "C:\Temp\test.dat" For Binary As #fileNum
Put #fileNum, , myNumber ' 数値を書き込み
Close #fileNum ' ファイルを閉じる
End Sub
解説:
Open ... For Binary
でバイナリファイルを開く。Put #fileNum, , myNumber
でファイルに整数データを書き込む。Close #fileNum
でファイルを閉じる。
Put を使ってレコード(固定長データ)を保存
Put を使って、ユーザー情報(レコード)をバイナリファイルに書き込む例です。
Type UserData
ID As Integer
Name As String * 20 ' 20文字の固定長
Age As Integer
End Type
Sub SaveUserData()
Dim fileNum As Integer
Dim user As UserData
user.ID = 1
user.Name = "Taro Yamada"
user.Age = 30
fileNum = FreeFile
Open "C:\Temp\users.dat" For Random As #fileNum Len = Len(user)
Put #fileNum, 1, user ' 1レコード目に書き込む
Close #fileNum
End Sub
解説:
Type
を使って、固定長のレコードを定義。Open ... For Random
でファイルを開き、レコード単位でアクセス可能にする。Put #fileNum, 1, user
で 1 番目のレコードにデータを書き込む。
ExcelでのPutの活用例(セルのデータを保存)
Excelのセルデータをバイナリファイルに保存する例です。
Sub SaveCellData()
Dim fileNum As Integer
Dim cellValue As String
cellValue = Range("A1").Value
fileNum = FreeFile
Open "C:\Temp\cell_data.dat" For Binary As #fileNum
Put #fileNum, , cellValue
Close #fileNum
End Sub
解説:
- セルA1のデータを取得し、バイナリファイルに保存。
- テキストファイルではなく、バイナリ形式で書き込む。
Get と組み合わせてデータを読み込む
Put で書き込んだデータは、Get
を使って読み取ることができます。
Sub LoadNumber()
Dim fileNum As Integer
Dim myNumber As Integer
fileNum = FreeFile
Open "C:\Temp\test.dat" For Binary As #fileNum
Get #fileNum, , myNumber ' データを読み込み
Close #fileNum
MsgBox "読み込んだ数値: " & myNumber, vbInformation, "Getの例"
End Sub
解説:
Get #fileNum, , myNumber
を使って、Put で保存したデータを読み込む。- バイナリデータを正しく取り出すことができる。
エラーを回避する方法
Put を使う際に、ファイルが開けない場合のエラーハンドリングを追加します。
Sub SafeFileWrite()
Dim fileNum As Integer
Dim myData As String
myData = "エラーチェック付きデータ"
On Error Resume Next
fileNum = FreeFile
Open "C:\Temp\safe_output.dat" For Binary As #fileNum
If Err.Number <> 0 Then
MsgBox "ファイルを開けませんでした: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Exit Sub
End If
Put #fileNum, , myData
Close #fileNum
End Sub
解説:
- ファイルを開く際にエラーが発生した場合、エラーメッセージを表示。
- エラーがなければデータを書き込んでファイルを閉じる。
Putの注意事項
- Put はバイナリや固定長データの書き込みに適している: テキストデータを扱う場合は
Print #
やWrite #
を使用する方が便利。 - ファイルの書き込み位置を指定できる:
Put #fileNum, 1, data
のようにレコード単位でアクセス可能。 - 型に注意: データ型が異なると、読み取り時に正しく取得できない可能性がある。
よくある質問
- Q: Put でテキストを保存できますか?
- A: はい。ただし、テキストファイルとして扱う場合は
Print #
やWrite #
を使う方が簡単です。 - Q: Get との違いは?
- A: Put はデータを書き込む命令で、Get はデータを読み取る命令です。
- Q: ファイルの途中にデータを書き込めますか?
- A: はい。
Put #fileNum, 位置, データ
で指定した位置にデータを書き込めます。 - Q: バイナリデータのサイズは決まっていますか?
- A: データ型によってサイズが異なります。
Len()
を使うとサイズを確認できます。
まとめ
- Put はバイナリデータや固定長データをファイルに書き込む。
- 数値や文字列、レコードなどのデータを保存可能。
- ファイルの特定の位置にデータを書き込める。
- Get と組み合わせることでデータの保存・取得が可能。