5.FileSystemObject の TextStream オブジェクトを使っての読み書き色々 |
1.テキストファイル(CSVファイル含む)の行数(件数)を瞬時に取得 2.FileSystemObject の TextStream オブジェクトを使ってのファイルの読み書き 3.TextStream オブジェクトを使ってのファイルの行毎の読み込み 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:Microsoft Scripting Runtime (scrrun.dll) 参照設定方法参照 使用 API:なし その他 :FileSystemObject については、こちらをご覧ください。 : |
1.テキストファイル(CSVファイル含む)の行数(件数)を瞬時に取得 |
Option Explicit 'SampleNo=159 2002.07.03 Private Sub Command1_Click() Dim Fso As New FileSystemObject Dim FsoTS As TextStream 'ファイルの末尾から書き込みモードで開きます Set FsoTS = Fso.OpenTextFile("test.txt", ForAppending) '現在のファイルポインターの位置を行番号で取得します Label1.Caption = "ファイルの行数は " & FsoTS.Line & " 行です。" FsoTS.Close Set FsoTS = Nothing '下記でも取得できます。 Debug.Print CreateObject("Scripting.FileSystemObject"). _ OpenTextFile("C:\test.csv", ForAppending).Line - 1 End Sub ファイルをすべて読込む事なくテキストファイルの行数を取得できます。従って、大きなファイルでも瞬時に取得する事ができます。 又、CSVファイルも上記と同様に行数(件数)を取得する事ができます。(CSVファイルの場合マイナス1します) 行数とはWord 等でも同じですが改行の数を取得しております。従って一番最後の文字を書き終わった後で改行して保存すると1行多く取得しているかのように錯覚される方がおられます。必要であればその辺の処理をして下さい。 |
2.FileSystemObject の TextStream オブジェクトを使ってのファイルの読み書き |
Option Explicit 'SampleNo=161 2002.07.03 Private Sub Command1_Click() Text1.Text = "" Dim Fso As New FileSystemObject Dim FsoTS As TextStream Set FsoTS = Fso.OpenTextFile("test.txt") 'ファイル全体を読み込みテキストボックスに表示 Text1.Text = FsoTS.ReadAll 'オープンしていたファイルを閉じる FsoTS.Close Set FsoTS = Nothing End Sub Private Sub Command2_Click() 'ファイルを作成(保存・書込)する Dim Fso As New FileSystemObject Dim FsoTS As TextStream '指定されたファイル名のファイルを作成し、ファイルを読み込んだり、 '書き込むときに使用する TextStream オブジェクトを返します。 'True の場合上書き(ファイル名が存在しなければ新規作成) Set FsoTS = Fso.CreateTextFile("Test01.Txt", True) 'TextBox の内容を Test01.Txt に書き込みます。 FsoTS.Write Text1.Text FsoTS.Close End Sub |
3.TextStream オブジェクトを使ってのファイルの行毎の読み込み |
Private Sub Command1_Click() Text1.Text = "" Dim myText As String Dim Fso As New FileSystemObject Dim FsoTS As TextStream Set FsoTS = Fso.OpenTextFile("test.txt") With FsoTS Do Until .AtEndOfStream myText = myText & .ReadLine & vbCrLf Loop End With FsoTS.Close Set FsoTS = Nothing Text1.Text = myText End Sub |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |