Home » FSO・FileSystemObjectの使い方 » TextStreamでファイル出力するExcelマクローFileSystemObject.OpenTextFileメソッド

TextStreamでファイル出力するExcelマクローFileSystemObject.OpenTextFileメソッド

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBA(Visual Basic for Applications)の、OpenステートメントやPrint #ステートメントを使って、テキストファイルを出力するExcelマクロをご紹介しました。

同じことを、FileSystemObjectのTextStreamオブジェクトを使って行うこともできます。

TextStreamを使ってファイル出力するExcelマクロ

TextStreamオブジェクトといっても具体的な実装方法はいろいろあり、この記事ではFileSystemObjectオブジェクトのOpenTextFileメソッドを使ったマクロをご紹介しておきます。

[スポンサードリンク]

FileSystemObject.OpenTextFileメソッドを使ってファイル出力するサンプルマクロ

FileSystemObjectへの参照設定を行っておいて、以下のSubプロシージャを実行すると、アクティブシートのA1:A10セルのデータが、アクティブなブックと同じフォルダーに「output.txt」というテキストファイルとして出力されます。

Sub ファイル出力を行う_OpenTextFileメソッド()
 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

 tst.Close
 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)
と、いろいろ書いてやる必要があります。

TextStreamを使ってファイル出力するExcelマクロ

引数・IOModeには、ファイルの書き込みを行うので、IOMode列挙に定義されている定数・ForWritingを指定し、

TextStreamを使ってファイル出力するExcelマクロ

引数・Createには新規にファイルを作成するのでTrueを指定しています。

テキストファイルへの書き込みを行う部分では、
  tst.WriteLine Text:=Cells(i, "A").Value
とTextStreamオブジェクトのWriteLineメソッドを利用しています。

TextStreamを使ってファイル出力するExcelマクロ

TextStreamオブジェクトを使って既存ファイルに追記するサンプルマクロ

既存ファイルに追記を行う場合は、以下のようなSubプロシージャです。

Sub ファイルに追記する_TextStreamオブジェクト()
 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メソッド

「FSO・FileSystemObjectの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.