テキストファイルとデータをやり取りします。マクロの処理結果のログファイルにしたり、抽出した情報をCSVファイルにしたりといった使い方ができます。
テキストファイルに書き出すマクロ
'参照: Microsoft Scripting Runtime
Sub テキストの書き込み()
Dim oFS As New FileSystemObject
Dim oTS As TextStream
Dim pathTxt As String
Dim sLine As String
pathTxt = ActiveWorkbook.Path & "\log.txt"
' 書き込み用(上書き)で開く/作成する
Set oTS = oFS.CreateTextFile(Filename:=pathTxt, Overwrite:=True)
'' 書き込み (追記) 用に開く
' If oFS.FileExists(pathTxt) = False Then Exit Sub
' Set oTS = oFS.OpenTextFile(Filename:=pathTxt, IOMode:=ForAppending)
oTS.WriteLine "あいうえお"
oTS.WriteLine "かきくけこ"
' oTS.Write "あいうえお" & vbCrLf & "かきくけこ " & vbCrLf
oTS.Close
End Sub
テキストファイルから読み取るマクロ
'参照: Microsoft Scripting Runtime
Sub テキストの読み込み()
Dim oFS As New FileSystemObject
Dim oTS As TextStream
Dim pathTxt As String
Dim txt As String
pathTxt = ActiveWorkbook.Path & "\log.txt"
' 読み取り専用で開く
If oFS.FileExists(pathTxt) = False Then Exit Sub
Set oTS = oFS.OpenTextFile(Filename:=pathTxt, IOMode:=ForReading)
' 1行ずつ読み込み
Do
txt = oTS.ReadLine
MsgBox txt
If oTS.AtEndOfStream Then Exit Do
Loop
'' まとめて読み込み
' txt = oTS.ReadAll
' MsgBox txt
oTS.Close
End Sub
解説
ファイルを作成する/開く
テキストファイルの作成・オープンには、FileSystemObject クラスを使います。このため、上記の例では参照設定に「Microsoft Scripting Runtime」を加える必要があります。
CreateTextFile (Filename:=ファイルパス, Overwrite:=True)
書き込み用にファイルを作成して開きます。Overwrite:=True
の指定により、すでにファイルがある場合は上書きされます。
OpenTextFile(Filename:=ファイルパス, IOMode:=ForAppending)
書き込み用にファイルを開きます。既存の内容の後に追記されます。
OpenTextFile(Filename:=ファイルパス, IOMode:=ForReading)
ファイルを読み取り専用で開きます。
ファイルに書き込む
Write
メソッドまたは WriteLine
メソッドでテキストを書き込みます。WriteLine
は指定するテキストに改行コードが付きます。次の2つは同じ書き込みになります。
oTS.WriteLine "あいうえお"
oTS.Write "あいうえお" & vbCrLf
ファイルから読み取る
上から1行ずつ読み取る場合は ReadLine
メソッドを使います。AtEndOfStream
プロパティで最終行を判定します。
全行をまとめて読み取る場合は ReadAll
メソッドを使います。
ファイルを閉じる
ファイルはバックグラウンドで開かれるため画面上には表示されませんが、Close
メソッドで必ず閉じるようにします。
ユーザー確認のためにファイルを開く
処理完了とともに書き出した内容をユーザーに示すような場合は、下記の記事を参考にしてください。
他のアプリで流用する目的で、ファイルとして残す必要がない場合はクリップボードに書き出す方法もあります。