INDEX
Writeの概要
ファイルにデータをカンマ区切りで書き込む VBAの予約語 | ||
Write 概要 Write ステートメントは、VBA でファイルにデータを書き込むために使用されます。データはカンマ区切り(CSV 形式)で書き込まれ、文字列は自動的にダブルクォーテーション(”)で囲まれます。 わかりやすく説明 Write は、「ファイルにデータを書き出すよ!」という命令です。書き込まれるデータは自動的にカンマ区切りになり、文字列にはダブルクォーテーションが付きます。 |
||
|
Write を使った基本的なファイル書き込み
Write を使って、テキストファイルにデータを書き込む基本的な例です。
Sub ExampleWrite()
Dim fileNum As Integer
fileNum = FreeFile ' 使用可能なファイル番号を取得
' ファイルを開く(新規作成または上書き)
Open "C:\test.txt" For Output As #fileNum
' データを書き込む
Write #fileNum, "田中", 30, "東京"
' ファイルを閉じる
Close #fileNum
End Sub
解説:
Write #fileNum, "田中", 30, "東京"
でデータを書き込み。- データはカンマ区切りで保存され、文字列は自動的にダブルクォーテーションで囲まれる。
出力されるファイルの内容:
"田中",30,"東京"
Excel のデータをファイルに書き出す
Write を使って、Excel のセルデータをテキストファイルに保存する例です。
Sub ExampleWriteExcel()
Dim fileNum As Integer
Dim i As Integer
fileNum = FreeFile
' ファイルを開く
Open "C:\excel_data.txt" For Output As #fileNum
' A列のデータを順番に書き込む(A1 から A10)
For i = 1 To 10
Write #fileNum, Cells(i, 1).Value
Next i
' ファイルを閉じる
Close #fileNum
End Sub
解説:
- A1 から A10 までのデータを順番にファイルに書き込む。
- 各データは 1 行ずつ書き込まれる。
複数のデータを 1 行で書き込む
Write を使って、複数のデータを 1 行にまとめて書き込む例です。
Sub ExampleWriteMultiData()
Dim fileNum As Integer
fileNum = FreeFile
' ファイルを開く
Open "C:\multi_data.txt" For Output As #fileNum
' 1行に複数のデータを記録
Write #fileNum, "田中", 30, "東京"
Write #fileNum, "佐藤", 25, "大阪"
' ファイルを閉じる
Close #fileNum
End Sub
出力されるファイルの内容:
"田中",30,"東京" "佐藤",25,"大阪"
エラーを回避する方法
Write を使用する際に、ファイルのアクセスエラーを防ぐ方法を紹介します。
Sub SafeWrite()
Dim fileNum As Integer
On Error Resume Next ' エラーが発生しても続行
fileNum = FreeFile
Open "C:\test.txt" For Output As #fileNum
' エラーが発生したか確認
If Err.Number <> 0 Then
MsgBox "ファイルを開けませんでした: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Exit Sub
End If
' データを書き込む
Write #fileNum, "エラーチェック済み"
' ファイルを閉じる
Close #fileNum
End Sub
解説:
- エラーが発生した場合にメッセージを表示し、処理を中断。
- エラーハンドリングを適用し、安全にデータを書き込む。
Write の注意事項
- ファイルの書式が固定される: 文字列は自動的にダブルクォーテーションで囲まれ、カンマ区切りになる。
- 数値のフォーマットが変更される: 日付や数値が標準的な書式で書き込まれるため、フォーマットに注意が必要。
- Print ステートメントとの違い: Print は書式を自由に設定できるが、Write はデータを CSV 形式で統一しやすい。
よくある質問
- Q: Write と Print の違いは何ですか?
- A: Write はデータをカンマ区切りで書き込み、文字列を自動的にダブルクォーテーションで囲みます。一方、Print はデータを自由な書式で出力できます。
- Q: Write で改行を入れるにはどうすればいいですか?
- A: Write を実行すると自動的に改行されるため、特別な処理は不要です。
- Q: ファイルに書き込む際、既存のデータを保持するには?
- A:
Append
モードを使用すると、既存のデータの末尾に追加できます。例:Open "C:\test.txt" For Append As #fileNum
- Q: Write で数値の書式を指定できますか?
- A: いいえ。Write は数値を自動的にフォーマットするため、書式を指定したい場合は
Print
を使用してください。
まとめ
- Write はファイルにデータをカンマ区切り(CSV 形式)で書き込む。
- 文字列は自動的にダブルクォーテーションで囲まれる。
- Excel のデータをファイルに保存する際に便利。
- Print ステートメントとは異なり、データの書式が統一される。
- エラーハンドリングを適用し、安全にファイルを開いて書き込むことが重要。