FSOを使用して指定してテキストファイルの作成・読み取り・書きこみを行う方法 FSOオブジェクトのCreateTextFile(または、FolderオブジェクトのCreateTextFile) ▼記述例▼ FSOオブジェクトのOpenTextFile(または、FileオブジェクトのOpenAsTextStream) ▼記述例▼ ・Column 横方向の位置の取得 ・Close テキストファイルを閉じる ※前提※ TextStreamオブジェクトのメソッドを使用して、ファイル「tamashi.txt」を作成したあと TextStreamオブジェクトのメソッドを使用して作成したファイル「tamashi.txt」の中身を読み取って ▼記述例▼
TextStreamオブジェクトの取得
【CreateTextFile】テキストファイルを作成して操作
書式:
オブジェクト.CreateTextFile("ファイル名",上書きするorしない)
→上書きする:True(規定) / 上書きしない:False Dim FSO As New FIleSystemObject '外部のオブジェクトの参照を格納
Dim TextInfo As TextStream '操作したいテキストファイルを格納するための変数を作成
Set TextInfo = FSO.CreateTextFile("C:\Users\user\Desktop\tama-shi\tamashi.txt" , True) 'TextStreamオブジェクトのインスタンスを生成
【OpenTextFile】【OpenAsTextStream】既存のテキストファイルを開いて操作
書式:
オブジェクト.OpenTextFile("ファイル名",入出力モード)
→入出力モード:ForReading(規定・読み取り専用) / ForWriting(上書き) / ForAppending(追記) Dim FSO As New FIleSystemObject '外部のオブジェクトの参照を格納
Dim TextInfo As TextStream '操作したいテキストファイルを格納するための変数を作成
Set TextInfo = FSO.OpenTextFile("C:\Users\user\Desktop\tama-shi\tamashi.txt" , ForAppending) 'TextStreamオブジェクトのインスタンスを生成
TextStreamオブジェクトのプロパティ
・Line 縦方向の位置の取得
・AtEndOfLine ファイルポインタの位置が行末かどうか
・AtEndOfStream ファイルポインタの位置が最後尾かどうか
他TextStreamオブジェクトのメソッド
・Read 指定した文字数を読み込み
・ReadAll 全文字を読み込み
・ReadLine 1行読み込み
・Skip 指定した数の文字数スキップして読み込み
・SkipLine 1行スキップして読み込み
・Write 指定した文字数を書き込み
・WriteLine 1行+改行文字を書き込み
・WriteBlankLines 指定した数の改行文字を書き込み(改行文字だけを書き込むのね)
他【実践】テキストファイルを開いて書き込み・読み取りを行う記述例
以下のVBAを設置するAccessファイルは、以下の場所に格納されている
"C:\Users\user\Desktop\たま氏"CreateTextFile
テキストファイル内に文字列の書き込みを行う
▼記述例▼Sub Test_TextStream_1()
Dim FSO As New FIleSystemObject '外部のオブジェクトの参照を格納
Dim TextInfo As TextStream '操作したいテキストファイルを格納するための変数を作成
Dim FPath As String 'ファイルのパスを格納するための変数を作成
FPath = CurrentProject.Path & "\tama-shi\"
Set TextInfo = FSO.CreateTextFile(FPath & "tamashi.txt", True) 'TextStreamオブジェクトのインスタンスを生成
TextInfo.WriteLine "たま氏は常に眠い"
TextInfo.Write "眠すぎて眠いのかどうか判らず"
TextInfo.WriteLine "寝ているのか起きているのかも判らない"
TextInfo.Write "おかしい人間になってしまった"
Set TextInfo = Nothing '念のため参照を解除
Set FSO = Nothing '念のため参照を解除
End Sub
▼処理結果▼
OpenTextFileをかまさなくてもwriteできた
OpenTextFile
イミディエイトウィンドウに書き出すSub Test_TextStream_2()
Dim FSO As New FIleSystemObject '外部のオブジェクトの参照を格納
Dim TextInfo As TextStream '操作したいテキストファイルを格納するための変数を作成
Dim FPath As String 'ファイルのパスを格納するための変数を作成
FPath = CurrentProject.Path & "\tama-shi\"
Set TextInfo = FSO.OpenTextFile(FPath & "tamashi.txt", ForReading) 'TextStreamオブジェクトのインスタンスを生成
Debug.Print TextInfo.Read(4)
TextInfo.SkipLine
TextInfo.SkipLine
Debug.Print TextInfo.ReadLine
Set TextInfo = Nothing '念のため参照を解除
Set FSO = Nothing '念のため参照を解除
End Sub
▼処理結果▼
ちょっと遊んでしまった感あり...