簡単にテキストファイルに書き出す

中級VBA

はじめに

 ExcelVBAでは、簡単にテキストファイルを書き出す事が出来ます。
 ただし、文字コードは、S-JIS で、改行コードは、CRLF になります。

プログラム

Sub myWriteText()

    Dim filename As String
    filename = ThisWorkbook.Path & "\output.txt"

    Open filename For Output As #1
        Print #1, "あいうえお"
        Print #1, "かきくけこ"
    Close #1

End Sub

 やり方としては、以下のようにしてテキストファイルをオープンします。

 Open テキストファイル名 For 書込み方式 As #ファイル番号
 
 指定したテキストファイルが無ければ作ってくれます。

 書込み方式は、以下の2つがあります。
 Output  上書き
 Append  追記

 
 #ファイル番号は、これから扱うファイルに番号を割り振ったものです。
 通常は、「#1」と書いておけばOKです。

 ファイルに書き込むには以下のようにします。

 Print #ファイル番号, 文字列

 これは、一行分の書き込みになります。
 
 最後にテキストファイルを閉じます。

 Close #テキスト番号

 これで一連の流れは終わりです。簡単ですね。

 上記のプログラムでは、ブックと同じフォルダに output.txt というファイルを作って、以下のように書き込まれます。
 文字コードは、S-JIS で、改行コードは、CRLF です。変更はできません。

シートの内容をテキストとして書き出す

 A列をまとめて書き出したければ、以下のようになります。
セルの値を渡していけばOKです。

Sub myWriteTextColA()
    Dim i As Long
    Dim filename As String
    filename = ThisWorkbook.Path & "\output.txt"
    
    Open filename For Output As #1

    With ActiveSheet
    For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
        Print #1, .Cells(i, "A")
    Next i
    End With
    Close #1
End Sub

 シートの値が上記のような場合、A列を書き出すと以下のようになります。

CSVファイルとして書き出す

 CSVファイルは、カンマ区切りしたテキストファイルなので、カンマを追加しながら書き出せばCSVファイルとなります。
 その際、ファイル名の拡張子は csv とします。

Sub myWriteCSV()
    Dim i As Long
    Dim filename As String
    filename = ThisWorkbook.Path & "\output.csv"
    
    Open filename For Output As #1

    With ActiveSheet
    For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
    
        Print #1, .Cells(i, "A") & "," & _
                    .Cells(i, "B") & "," & _
                    .Cells(i, "C") & "," & _
                    .Cells(i, "D")
    
    Next i
    End With

    Close #1
End Sub

 出来上がった、CSVファイルは、文字コード:S-JIS 、改行コード:CRLF になります。
 最近では、文字コード UTF-8 が標準的に扱われているようですが、Excel間でやり取りするのであれば特に問題ないでしょう。

 CSVファイルはExcelで直接開く事が出来ますが、テキストエディタで開いた状態は以下のようになっています。最初のシートをCSVファイルとして書き出した例です。

まとめ

 Excelの内容をテキストファイルに書き出す時、文字コード:S-JIS 、改行コード:CRLF で良いのであれば簡単です。

 文字コード UTF-8 にしたい場合は、”ADODB.Stream”というライブラリを読み込む必要があります。
 方法については以下のページを参照してください。
 
 ・UTF-8のテキストファイルを扱う

タイトルとURLをコピーしました