説明
機能
既存のテキストファイルの最終行の後に、1行ずつ追記するサンプルです。
(文字コード:Shift-JIS、改行コード:CRLF)
ファイルを書き込む方法はたくさんありますが、このサンプルは、もっとも簡単な例です。
補足・注意事項
このサンプルコードでは、入力するテキストファイルの文字コードがShift-JIS形式で、改行コードがCRLFになります。
他の文字コード、改行コードのファイルのサンプルは、今後追加する予定です。
使用例
テキストファイルを新たに作成して1行ずつ書き込む
コード
Sub Ex02() Dim fileno As Integer ' ファイル番号 'ファイル番号の取得 fileno = FreeFile '出力ファイルの処理(追記) Open "c:\vbatest\sample\test.txt" For Append As #fileno Print #fileno, "えええ" Print #fileno, "おおお" Close #fileno End Sub
解説
変数定義
3:変数定義(ファイル番号を整数型で定義)
書き込みの準備
6:空いているファイル番号の取得して3で定義した変数にセット
ファイルの書き込み
9:書き込むファイルを追記モードでオープンする
10:1行書き込む(”えええ”と書き込み)
11:1行書き込む(”おおお”と書き込み)
後始末
12:オープンしているファイルをクローズ
実行例
実行するとファイル”test.txt”に追加されます。
既存の”test.txt”が存在しない場合は、新規作成されます。
書き込むファイルのパス
Cドライブのvbatest\sampleフォルダにtext.txtというファイル名が存在していることにします。
(テキストファイルの書き込み(Open-Output)実施の後の想定です。)
書き込む前のファイルの内容
3行のデータを含むテキストファイルです。
コードの実行
EX02を実行します。
“test.txt”が更新された
テキストファイルが追記されたことにより、更新日時が変わりました。
ファイルの内容
新たに2行追記されて5行になったテキストファイルです。
メモ
コードのサンプルとしてのわかりやすさを優先しているので、エラー処理を省略したり、ファイルのパスを直接書いたり、Print文で適当に2行書いたりしていますが、流用する場合は、シート上にパスを記述出来るようにするなど、適宜修正するとよいと思います。
補足情報
ワンポイントアドバイス
テキストファイルを作成する際の2つのモード
Openステートメントを使ってテキストファイルを作成するとき、以下の2つのモードがあります。
Outputモード(新規作成)
新規でファイルを作成して書き込みを行います。同名のファイルがあれば上書きします。
Appendモード(追記)
既存のファイルの最終行の後に追加で書き込みを行います。既存ファイルがなければ新たに作成します。
このページでは、Appendモードで作成していますので、同名のファイルが存在した場合はもとの内容を残したまま追記されます。
ファイル番号
このページのサンプルのような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