VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 ファイル 読み書き操作
ファイルのオープン〜読み込み・書き込み〜クローズまでの操作

お品書き
● サンプルテキストファイルを1行単位に読み込む サンプル プログラムリスト
● サンプルテキストファイルにデータを1行追加する サンプル プログラムリスト
● Openファイルを開く
● FreeFile使用可能なファイル番号を取得する
● Print #ファイルにデータを書き込む
● Write #ファイルにデータを書き込む
● Input #ファイルからデータを1項目読み込む
● Line Input #ファイルからデータを1行読み込む
● Closeファイルを閉じる
● Resetファイルをすべて閉じる


● テキスト ファイル読み込みのサンプル プログラム

'******************************
' テキストファイルを1行単位に読み込む
'******************************
Private Sub Command1_Click()
    Dim fileNo As Integer
    Dim buf
    fileNo = FreeFile                         'ファイル番号の取得
    Open "TESTFILE.TXT" For Input As #fileNo 'ファイルを読込モードで開く
    Do Until EOF(fileNo)                     'EOFになるまでループ
        Line Input #fileNo, buf              'ファイルから1行読み込む
        Debug.Print buf
    Loop
    Close #fileNo                              'ファイルを閉じる
End Sub


● テキスト ファイル書き込みのサンプル プログラム

'********************************
' テキストファイルにデータを1行追加する
'********************************
Private Sub Command1_Click()
    Dim fileNo As Integer
    fileNo = FreeFile                           'ファイル番号の取得
    Open "TESTFILE.TXT" For Append As #fileNo 'ファイルを追加モードで開く
    Print #fileNo, "TEST"                     'ファイルへ書き込む
    Close #fileNo                               'ファイルを閉じる
End Sub


● Open ステートメント
【機能】ファイルを開いて、ファイルへ入出力できるようにします。
【書式】
【書式】
Open パス名 For モード As ファイル番号
Open パス名 For モード Access アクセス ロック As ファイル番号 Len=レコード長
パス名必ず指定します。ファイル名を指定します。フォルダ名、またはドライブ名も含めて指定できます。
パスを省略した場合はカレントディレクトリになります。
モード必ず指定します。ファイル モードを示す、次のいずれかのキーワードを指定します。
Append
Binary
Input
Output
Random
追加書き込みモードで開きます。
バイナリファイルモードで開きます。
読み込みモードで開きます。
新規書き込みモードで開きます。
ランダムアクセスモードで開きます。
省略すると、ファイルはランダム アクセス モードで開かれます。
アクセス省略可能です。開くファイルに対して行う処理を示す、次のいずれかのキーワードを指定します。
Read
Write
Read Write
読み込み専用で開きます。
書き込み専用で開きます。
読み書き可能で開きます。
ロック省略可能です。開くファイルに対する、他のプロセスからのアクセスを制御する、次のいずれかのキーワードを指定します。
Shared
Lock Read
Lock Write
Lock Read Write
他のプロセスから、このファイルの読み書きができます。
他のプロセスから、このファイルを読むことはできません。
他のプロセスから、このファイルを書くことはできません。
他のプロセスから、このファイルの読み書きができません。
ファイル番号必ず指定します。1 〜 511 の範囲で任意のファイル番号を指定します。FreeFile 関数を使用して次に使用可能なファイル番号を取得してください。
レコード長省略可能です。32,767 バイト以下の数値を指定します。ランダム アクセス ファイルの場合は、レコード長を表します。シーケンシャル ファイルの場合は、バッファの容量を表します。
【 例 】Open strFile For Input As #1
Open strFile For Append As #1
Open strFile For Output As #fileNo
Open "TESTFILE" For Binary Access Write As #1
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Open "TESTFILE" For Output Shared As #1
Open "TESTFILE" For Binary Access Read Lock Read As #1

  ※ 指定したファイルが存在しない場合、Append、Binary、Output、Randomモードでは、新規に作成して開きます。
  ※ ファイルが別プロセスで既に開かれていて、指定したアクセスが実行できないとき、エラーが発生します。
  ※ Binary、Input、Randomは、ファイルを開いたまま、別のファイル番号で同時に開くことができます。一方、Append、Outputは、いったんファイルを閉じないと、別のファイル番号で再び開くことはできません。


● FreeFile 関数
【機能】使用可能なファイル番号を整数型 (Integer) の値で返します。
【書式】result = FreeFile
【 例 】Dim fileNo As Integer                    'ファイル番号
fileNo = FreeFile                          'ファイル番号取得
Open "TESTFILE.TXT" For Append As #fileNo  'ファイルオープン
Print #fileNo, "test"
Close #fileNo


● Print # ステートメント
【機能】ファイルにデータを書き込みます。
【書式】
【書式】
Print #ファイル番号, "出力データ"     ※最後に改行コードを出力します。
Print #ファイル番号, "出力データ";    ※最後に改行コードを出力しません。
【 例 】 Dim fileNo As Integer
fileNo = FreeFile
Open "TESTFILE.TXT" For Append As #fileNo
Print #fileNo, "test1";             'データ出力
Print #fileNo, "test2"              'データ出力
Print #fileNo, "test3"              'データ出力
Close #fileNo

出力結果test1test2
test3

  ※ Print # ステートメントで作成したファイルは、Line Input # ステートメント もしくは、Input # ステートメントを使用してファイルを読み込むことができます。


● Write # ステートメント
【機能】ファイルにデータを書き込みます。データはダブルクォーテーションで囲まれて出力します。
【書式】
【書式】
Write #ファイル番号, "出力データ"     ※最後に改行コードを出力します。
Write #ファイル番号, "出力データ";    ※最後にカンマを出力して、改行コードは出力しません。
【 例 】 Dim fileNo As Integer
fileNo = FreeFile
Open "TESTFILE.TXT" For Append As #fileNo
Write #fileNo, "test1";            'データ出力
Write #fileNo, "test2"             'データ出力
Write #fileNo, "test3"             'データ出力
Close #fileNo

出力結果"test1","test2"
"test3"

  ※ Write # ステートメントで作成したファイルは、Input # ステートメントを使用してファイルを正しく読み込むことができます。


● Input # ステートメント
【機能】ファイルからデータを読み込みます。
【書式】
【書式】
Input #ファイル番号, 読込データ格納変数      ※1件データを読み込みます。
Input #ファイル番号, 変数A, 変数B, ・・・    ※複数件のデータを読み込みます。
【 例 】 Dim fileNo As Integer
Dim buf
fileNo = FreeFile
Open "TESTFILE.TXT" For Input As #fileNo
Do Until EOF(fileNo)
    Input #fileNo, buf   'ファイルから1項目読込
    Debug.Print buf
Loop
Close #fileNo

ファイル内容 (例1)実行結果
"test1","test2"
"test3"
test1
test2
test3

ファイル内容 (例2)実行結果
test1,test2
test3
test1
test2
test3
【 例 】 Dim fileNo As Integer
Dim bf1,bf2
fileNo = FreeFile
Open "TESTFILE.TXT" For Input As #fileNo
Do Until EOF(fileNo)
    Input #fileNo, bf1, bf2   'ファイルから2項目ずつ読込
    Debug.Print "bf1:" & bf1 & " bf2:" & bf2
Loop
Close #fileNo

ファイル内容 (例1)実行結果
"test1","test2"
"test3","test4"
bf1:test1 bf2:test2
bf1:test3 bf2:test4

ファイル内容 (例2)実行結果
"test1","test2"
"test3"
bf1:test1 bf2:test2
エラーが発生

  ※ Write # ステートメントで作成したファイルは、Input # ステートメントを使用してファイルを正しく読み込むことができます。


● Line Input # ステートメント
【機能】ファイルから1行を読み込みます。
【書式】Line Input #ファイル番号, 読込データ格納変数
【 例 】 Dim fileNo As Integer
Dim buf
fileNo = FreeFile
Open "TESTFILE.TXT" For Input As #fileNo
Do Until EOF(fileNo)
    Line Input #fileNo, buf   'ファイルから1行読込
    Debug.Print buf
Loop
Close #fileNo

  ※ ファイルからキャリッジ リターン (Chr(13)) または改行コード (Chr(13)) + Chr(10)) の直前までのすべての文字を読み込みます。キャリッジ リターンと改行コードは、変数に読み込まれる文字列に追加されるのではなく、読み飛ばされます。


● Close ステートメント
【機能】開かれたファイルを閉じます。
【書式】
【書式】
【関連】
Close ファイル番号
Close
Reset
【 例 】 Dim fileNo As Integer
fileNo = FreeFile
Open "TESTFILE.TXT" For Append As #fileNo
Print #fileNo, "test1"
Close #fileNo        'ファイルを閉じる

  ※ ファイル番号を省略すると、Openステートメントで開いたすべてのファイルが閉じられます。


● Reset ステートメント
【機能】開かれたファイルをすべて閉じます。
【書式】
【関連】
Reset
Close
【 例 】 Dim fn1 As Integer
Dim fn2 As Integer

fn1 = FreeFile
Open "TESTFILE1.TXT" For Append As #fn1
Print #fn1, "test1"

fn2 = FreeFile
Open "TESTFILE2.TXT" For Append As #fn2
Print #fn2, "test2"

Reset            'ファイルを閉じる