説明
機能
テキストファイルを1行ずつ読み込むサンプルです。
(文字コード:Shift-JIS、改行コード:CRLF)
ファイルを読み込む方法はたくさんありますが、このサンプルは、もっとも簡単な例です。
補足・注意事項
このサンプルコードでは、入力するテキストファイルの文字コードがShift-JIS形式で、改行コードがCRLFになります。
他の文字コード、改行コードのファイルのサンプルは、今後追加する予定です。
使用例
テキストファイルを1行ずつ読み込んで処理をする
コード
Sub Ex01() Dim fileno As Integer ' ファイル番号 Dim buf As String ' 入力データエリア 'ファイル番号の取得 fileno = FreeFile '入力ファイルの処理 Open "c:\vbatest\test01.txt" For Input As #fileno While Not EOF(fileno) Line Input #fileno, buf 'ここに1行分の処理を記述 Debug.Print buf Wend Close #fileno End Sub
解説
変数定義
3:変数定義(ファイル番号を整数型で定義)
4:変数定義(入力データエリアを文字列型で定義)
読み込みの準備
6:空いているファイル番号の取得して3で定義した変数にセット
10:読み込むファイルを入力モードでオープン
ファイルの読み込み
12:ファイルを読み切るまで繰り返す
13:1行読み込んで4で定義した変数にセット
17:イミディエイトウインドウに読み込んだ1行(13で内容がセットされた変数)を表示
(このサンプルでは単に表示だけしましたが、コードを流用する場合は、ここに1行分の処理を書きます。)
後始末
21:オープンしているファイルをクローズ
実行例
実行すると入力ファイル”test01.txt”の内容が表示されます。
入力するファイルのパス
Cドライブのvbatestフォルダのtest01.txtというテキストファイルを読み込みます。
入力するファイルの内容
8行のデータを含むテキストファイルです。
コードと実行結果
イミディエイトウインドウに読み込んだ8行のデータが表示されました。
メモ
コードのサンプルとしてのわかりやすさを優先しているので、エラー処理を省略したり、ファイルのパスを直接書いたりしていますが、流用する場合は、シート上にパスを記述出来るようにするなど、適宜修正するとよいと思います。
補足情報
ワンポイントアドバイス
ファイル番号
このページのサンプルのようなOpenステートメントで開くファイルのプログラミングでは、ファイル番号を使います。
ファイル番号は、個々のファイルに付ける番号であり、Openしたときのファイル番号は、Input、Print、Closeなど、ファイルにアクセスするステートメントを記述するときも同様に記述します。複数ファイルを取り扱うプログラミングを行う際には、個々の命令で記述するファイル番号を間違えないようにしましょう。
2つのファイルを取り扱うプログラミングの例
入力ファイルのファイル番号を”inputfileno”、出力ファイルのファイル番号を”outputfileno”で定義した例です。
inputfileno = FreeFile Open "inputfile" For Input As #inputfileno outputfileno = FreeFile Open "outputfile" For Output As #outputfileno Line Input #inputfileno, buf Print #outputfileno, buf Close #inputfileno Close #outputfileno
VBAリファレンス
サンプルコード内で使用しているステートメントや関数の詳細は、以下のページを参照してください。
FreeFile関数
Openステートメント
準備中
Line Inputステートメント
準備中
Closeステートメント
準備中
Debug.Print
準備中
用語
イミディエイトウインドウ
準備中
ファイル番号
準備中
文字コード
準備中
改行コード
準備中
類似機能
ADODB.Streamオブジェクトによるファイル入出力
FileSystemObjectオブジェクトによるファイル入出力
参考サイト
Office VBA 言語リファレンス
https://msdn.microsoft.com/ja-jp/library/office/gg264383.aspx