目次へ戻ります
VB サンプル


VB テキストファイル操作編

テキストファイルの読み込み、書き込みの操作
●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
[ファイル内容]
"test1","test2"
"test3"

[実行結果]
test1
test2
test3
[ファイル内容]
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項目ずつ読込
    "bf1:" & bf1 & " bf2:" & bf2
  Loop
  Close #fileNo
[ファイル内容]
"test1","test2"
"test3","test4"
[実行結果]
bf1:test1 bf2:test2
bf1:test3 bf2:test4
[ファイル内容]
"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 fileNo As Integer

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

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

  Reset            'ファイルを閉じる

目次へ戻ります