テキストファイルの書き込み(追記) EXCEL VBAサンプルコード

VBAサンプル

説明

機能

既存のテキストファイルの最終行の後に、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)実施の後の想定です。)
cap_20160813130330_0003

書き込む前のファイルの内容

3行のデータを含むテキストファイルです。
cap_20160813130330_0004

コードの実行

EX02を実行します。
cap_20160813130330_0005

“test.txt”が更新された

テキストファイルが追記されたことにより、更新日時が変わりました。
cap_20160813130330_0006

ファイルの内容

新たに2行追記されて5行になったテキストファイルです。
cap_20160813130330_0007

メモ

コードのサンプルとしてのわかりやすさを優先しているので、エラー処理を省略したり、ファイルのパスを直接書いたり、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関数

VBAレファレンス FreeFile関数

Openステートメント

準備中

Line Inputステートメント

準備中

Closeステートメント

準備中

Debug.Print

準備中

用語

イミディエイトウインドウ

準備中

ファイル番号

準備中

文字コード

準備中

改行コード

準備中

類似機能

ADODB.Streamオブジェクトによるファイル入出力
FileSystemObjectオブジェクトによるファイル入出力

参考サイト

Office VBA 言語リファレンス
https://msdn.microsoft.com/ja-jp/library/office/gg264383.aspx

タイトルとURLをコピーしました