http://www.red.oit-net.jp/tatsuya/vb/Open.htm 目次へ戻ります <index.htm> /*VB サンプル*/ ------------------------------------------------------------------------ *VB テキストファイル操作編* テキストファイルの読み込み、書き込みの操作 ●Open <#Open> ファイルを開く <#Open> ●FreeFile <#FreeFile> 使用可能なファイル番号を取得する <#FreeFile> ●Print # <#Print> ファイルにデータを書き込む <#Print> ●Write # <#Write> ファイルにデータを書き込む <#Write> ●Input # <#Input> ファイルからデータを1項目読み込む <#Input> ●Line Input # <#LineInput> ファイルからデータを1行読み込む <#LineInput> ●Close <#Close> ファイルを閉じる <#Close> ●Reset <#Reset> ファイルをすべて閉じる <#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 *'ファイルを閉じる* 目次へ戻ります <index.htm>
テキストファイルの操作方法
2016/9/1 (木)