テキストファイルの操作(2)

ワークシートの内容をテキストに書き込むには,WriteステートメントとPrintステートメントの2つの方法がある.

Write ステートメント
1行の内容を1行に書き込む
1セルに入力されているデータ毎にダブルクォーテーションで囲まれ,データ間にはカンマ(またはセミコロン)が挿入される.
行末には自動的に改行が挿入される.
Printステートメント
セルの内容を行単位で書き込む.
データ毎のダブルクォーテーションや区切り文字は挿入されない.
行末には自動的に改行が挿入される.

どちらの場合も,書き込む時は,以下の手順で処理する.

  1. Openステートメントでテキストファイルを開く(パソコン内部で開かれる)
  2. Write/Printステートメントでテキストファイルに書き込む
  3. Closeステートメントでテキストファイルを閉じる

Writeステートメントでテキストファイルに書き込む

Writeステートメントは一覧表の出力などに向いている.

■ワークシートの内容をテキストファイルに書き込む

Sub Writeで出力()
    Dim fileNo As Integer
    Dim i As Long
    Dim lastRow As Long
    
    Worksheets("シート名").Activate
    lastRow = Range("A1").CurrentRegion.Rows.Count
    fileNo = FreeFile
    Open "絶対パスのファイル名" For Append As #fileNo
    For i = 1 To lastRow
        Print #fileNo, Cells(i, 1), Cells(i, 2), Cells(i, 3)・・・・
    Next i
    Close #fileNo
End Sub

『シート名』は文章が書いてあるシート名.
絶対パスのファイル名』は,テキストファイルを出力するディレクトリのフルパスと出力するテキストファイルの名称(フルパス名+ファイル名)を指定.
Openステートメントで 'Append' を指定しているので,複数回実行するとテキストファイルに追記される.
PrintステートメントのCellsは,出力するセルを全て記述する(行単位).

Printステートメントでテキストファイルに書き込む

Printステートメントは文章を出力するのに向いている.

■ワークシートの内容をテキストファイルに書き込む
※ワークシートのA列に文章が書いている事を前提としたサンプル

Sub Printで出力()
    Dim fileNo As Integer
    Dim i As Long
    Dim lastRow As Long
    
    Worksheets("シート名").Activate
    lastRow = Range("A65536").End(xlUp).Row
    fileNo = FreeFile
    Open "絶対パスのファイル名" For Append As #fileNo
    For i = 1 To lastRow
        Print #fileNo, Cells(i, 1)
    Next i
    Close #fileNo
End Sub

『シート名』は文章が書いてあるシート名.
絶対パスのファイル名』は,テキストファイルを出力するディレクトリのフルパスと出力するテキストファイルの名称(フルパス名+ファイル名)を指定.
Openステートメントで 'Append' を指定しているので,複数回実行するとテキストファイルに追記される.