テキストファイルに書き出す/読み取る

テキストファイルとデータをやり取りします。マクロの処理結果のログファイルにしたり、抽出した情報を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 メソッドで必ず閉じるようにします。

ユーザー確認のためにファイルを開く

処理完了とともに書き出した内容をユーザーに示すような場合は、下記の記事を参考にしてください。

 

他のアプリで流用する目的で、ファイルとして残す必要がない場合はクリップボードに書き出す方法もあります。

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