VBA(Visual Basic for Applications)の、OpenステートメントやPrint #ステートメントを使って、テキストファイルを出力するExcelマクロをご紹介しました。
同じことを、FileSystemObjectのTextStreamオブジェクトを使って行うこともできます。
TextStreamオブジェクトといっても具体的な実装方法はいろいろあり、この記事ではFileSystemObjectオブジェクトのOpenTextFileメソッドを使ったマクロをご紹介しておきます。
FileSystemObject.OpenTextFileメソッドを使ってファイル出力するサンプルマクロ
FileSystemObjectへの参照設定を行っておいて、以下のSubプロシージャを実行すると、アクティブシートのA1:A10セルのデータが、アクティブなブックと同じフォルダーに「output.txt」というテキストファイルとして出力されます。
Dim fso As Scripting.FileSystemObject
Dim tst As Scripting.TextStream
Dim f_path As String ' 出力するテキストファイルのフルパス
Dim i As Long
f_path = ActiveWorkbook.Path & "\output.txt"
Set fso = New Scripting.FileSystemObject
Set tst = fso.OpenTextFile( _
Filename:=f_path, _
IOMode:=ForWriting, _
Create:=True)
For i = 1 To 10
tst.WriteLine Text:=Cells(i, "A").Value
Next i
Set tst = Nothing
Set fso = Nothing
End Sub
VBAのOpenステートメントを使う場合は、
f_num = FreeFile
Open f_path For Output As f_num
だけでよかったのですが、FileSystemObjectオブジェクトのOpenTextFileメソッドでファイルを開く場合は、
Set fso = New Scripting.FileSystemObject
Set tst = fso.OpenTextFile( _
Filename:=f_path, _
IOMode:=ForWriting, _
Create:=True)
と、いろいろ書いてやる必要があります。
引数・IOModeには、ファイルの書き込みを行うので、IOMode列挙に定義されている定数・ForWritingを指定し、
引数・Createには新規にファイルを作成するのでTrueを指定しています。
テキストファイルへの書き込みを行う部分では、
tst.WriteLine Text:=Cells(i, "A").Value
とTextStreamオブジェクトのWriteLineメソッドを利用しています。
TextStreamオブジェクトを使って既存ファイルに追記するサンプルマクロ
既存ファイルに追記を行う場合は、以下のようなSubプロシージャです。
Dim fso As Scripting.FileSystemObject
Dim tst As Scripting.TextStream
Dim f_path As String
Dim i As Long f_path = ActiveWorkbook.Path & "\output.txt"
Set fso = New Scripting.FileSystemObject
Set tst = fso.OpenTextFile( _
Filename:=f_path, _
IOMode:=ForAppending, _
Create:=False)
For i = 1 To 10
tst.WriteLine Text:=Cells(i, "A").Value
Next i
tst.Close
Set tst = Nothing
Set fso = Nothing
End Sub
先ほどのマクロの、
Set tst = fso.OpenTextFile( _
Filename:=f_path, _
IOMode:=ForWriting, _
Create:= True)
の部分が、
Set tst = fso.OpenTextFile( _
Filename:=f_path, _
IOMode:= ForAppending, _
Create:= False)
となっています。
Home » FSO・FileSystemObjectの使い方 » TextStreamでファイル出力するExcelマクローFileSystemObject.OpenTextFileメソッド