「excel vba ファイル出力」
「excel マクロ ファイル出力 サンプル」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
テキストファイルを出力するExcel VBA(Visual Basic for Applications)のサンプルを探している方による検索です。
2016年現在、いくつかの実装方法が考えられますが、他のライブラリーを必要としない、VBAのステートメントだけを使う、昔ながらの方法をここではご紹介しておきます。
テキストファイルを出力するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブなワークシートのA1:A10セルのデータが、アクティブなブックと同じフォルダーに「output.txt」というファイル名で出力されます。
Dim f_path As String ' 出力ファイルのフルパス
Dim f_num As Integer ' ファイル番号
Dim i As Long
f_path = ActiveWorkbook.Path & "\output.txt"
f_num = FreeFile
For i = 1 To 10
Print #f_num, Cells(i, "A").Value
Next i
Close f_num
End Sub
アクティブブックと同じフォルダーに、「output.txt」というファイルがなければ、新規に作成して出力が行われ、既に存在していた場合には上書きします。
読み込む場合との違い
テキストファイルを読み込むマクロを既にご紹介しています。
違いは、ファイルをOpenする部分と、読み込むのか書き込むのか、です。
読み込む場合、Openする部分が、
Open f_path For Input As f_num
でしたが、今回は、
Open f_path For Output As f_num
です。
読み込むマクロでは読み込み部分が、
Line Input #f_num, rcd
でしたが、今回は
Print #f_num, Cells(i, "A").Value
となっています。
既存のファイルに追記を行うサンプルマクロ
以下のようなSubプロシージャにすると、既にファイルが存在していた場合には、追記が行われます。
Dim f_path As String ' 出力ファイルのフルパス
Dim f_num As Integer ' ファイル番号
Dim i As Long
f_path = ActiveWorkbook.Path & "\output.txt"
f_num = FreeFile
For i = 1 To 10
Print #f_num, Cells(i, "A").Value
Next i
Close f_num
End Sub
先ほどの上書きをするSubプロシージャで、
Open f_path For Output As f_num
となっていた行が、
Open f_path For Append As f_num
になっている部分だけが異なります。
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » VBAでテキストファイル出力-Openステートメント・Print #ステートメント