VBAオジサンのらくがき帳

テキストファイルを扱う

2021-04-16 00:00:00

テキストファイルを直接編集できると便利なことがあります。テキストファイルはフォントやフォーマットなどの設定がない文字だけの情報を格納しているファイルで、Windows標準のメモ帳であつかえるファイルの形式です。

ファイルを作成してテキストを追加するサンプルは以下のようになります。

Dim fileNum As Integer
Dim fileName As String

fileName = "C:\data\out.txt"
fileNum = FreeFile
Open fileName For Output As #fileNum
Print #fileNum, "1行目"
Print #fileNum, "2行目"
Close #fileNum

1行目、2行目とだけ書かれたテキストファイルが作成されます。(メモ帳などで開いて確認することができます。)fileNumは1,2,3など自分で設定してもよいですが、FreeFile関数を利用すると使える数字を返してくれるので安心です。

このコードではファイルがなければ新規に作成し、すでにある場合には上書きしてしますます。上書きではなく追記したい場合にはOpenステートメントでOutputの代わりにAppendを使います。

Open fileName For Output As #fileNum

Printステートメントでは文字列をそのまま書き出すだけでなく、下のようにTabやSpcやセミコロンを使った書き方もあります。

 Print #fileNum, "ABC"
 Print #fileNum, '空白行
 Print #fileNum, "ABC"; Tab; "DEF"; Tab; "GHI" '14文字ごと
 Print #fileNum, "ABC"; Tab(10); "DEF"; Tab(20); "GHI" '10文字目、20文字目からスタート
 Print #fileNum, "ABC"; Spc(5); "DEF"; Spc(5); "GHI" '間に5個スペース
 Print #fileNum, "ABC"; "-"; "DEF" '続けて
 Print #fileNum, "ABC" & "-" & "DEF" '上と同じ

結果は以下の通りです。

テキストファイルを読み込むときはOpenステートメントにInputを指定します。テキストファイルを読んで、そのままイミディエイトウィンドウに表示するコードは以下のようになります。

Dim buf As String
Dim fileNum As Integer
Dim fileName As String

fileName = "C:\data\in.txt"
fileNum = FreeFile
Open fileName For Input As #fileNum
Do Until EOF(fileNum)
    Line Input #fileNum, buf
    Debug.Print buf
Loop