VBAのWriteでファイルにデータを書き込む方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Writeの概要

ファイルにデータをカンマ区切りで書き込む VBAの予約語

Write

概要 Write ステートメントは、VBA でファイルにデータを書き込むために使用されます。データはカンマ区切り(CSV 形式)で書き込まれ、文字列は自動的にダブルクォーテーション(”)で囲まれます。

わかりやすく説明 Write は、「ファイルにデータを書き出すよ!」という命令です。書き込まれるデータは自動的にカンマ区切りになり、文字列にはダブルクォーテーションが付きます。

  • ファイルにデータをカンマ区切り(CSV 形式)で出力できる。
  • 文字列は自動的にダブルクォーテーション(”)で囲まれる。
  • Print ステートメントとは異なり、データの書式を統一しやすい。

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 ステートメントとは異なり、データの書式が統一される。
  • エラーハンドリングを適用し、安全にファイルを開いて書き込むことが重要。