更新日:、 作成日:
VBA ファイルの作成
はじめに
Excel VBA マクロでファイルを作成する方法を紹介します。
CreateTextFile や OpenTextFile 関数を使ってファイルを作成できます。
ここで紹介するのはファイルそのものを作成する方法で、データを書き込む方法ではありません。
FileSystemObject について
ここでは VBA の標準の関数より便利な FileSystemObject を使った方法を紹介しています。基本的な使い方については「FileSystemObject ファイル操作の基礎」をご覧ください。
コードを見やすくするため FileSystemObject を参照設定しています。また、エラー処理は行っていません。
FileSystemObject では UTF-16 と Shift_JIS のファイルしか扱えません。UTF-8 のファイルを読み込むと文字化けします。Unicode 文字を入力するには「文字コードを変換や判定する」をご覧ください。
ファイルの作成
ファイルを作成するには CreateTextFile 関数と OpenTextFile 関数の 2 種類があります。どちらも引数の指定方法が違うだけで同じように作成できます。
CreateTextFile 関数を使う
Dim fso As FileSystemObject
Set fso = New FileSystemObject ' インスタンス化
Dim ts As TextStream
Set ts = fso.CreateTextFile("D:\UTF-16.txt", Overwrite:=True, Unicode:=True) ' UTF-16 で作成
Set ts = fso.CreateTextFile("D:\Shift_JIS.txt", Overwrite:=True, Unicode:=False) ' Shift_JIS で作成
' 書き込み処理
ts.Close ' ファイルを閉じる
' 後始末
Set ts = Nothing
Set fso = Nothing
fso.CreateTextFile 関数で指定したパスのファイルを作成します。戻り値で TextStream オブジェクトを取得します。
第 2 (Overwrite) 引数に True を指定すると、必ず新規ファイルで上書きして作成します。False または省略すると既にファイルが存在するときはエラーが発生します。
第 3 (Unicode) 引数に True を指定するとファイルを UTF-16 で作成します。False または省略すると Shift_JIS で作成します。
OpenTextFile 関数を使う
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim ts As TextStream
Set ts = fso.OpenTextFile("D:\Tips.txt", ForWriting, True) ' 新規ファイルを作成
Set ts = fso.OpenTextFile("D:\Tips.txt", ForAppending, True) ' 既存のファイルに追記
' 書き込み処理
ts.Close ' ファイルを閉じる
' 後始末
Set ts = Nothing
Set fso = Nothing
fso.OpenTextFile 関数で指定したパスのファイルを作成します。戻り値で TextStream オブジェクトを取得します。
第 2 引数に ForWriting (2) を指定すると、必ず新規ファイルで作成します。ForAppending (8) を指定すると、既にファイルが存在するときは、その最後に追記します。
第 3 引数に True を指定するとファイルが存在しないときに自動で作成します。
Set ts = fso.OpenTextFile("D:\Tips.txt", ForAppending, True, TristateTrue) ' UTF-16 で読み込む
Set ts = fso.OpenTextFile("D:\Tips.txt", ForAppending, True, TristateFalse) ' Shift_JIS で読み込む
第 4 引数に TristateTrue を指定すると UTF-16 でファイルを作成または開きます。TristateFalse または省略すると、Shift_JIS でファイルを作成または開きます。
データの書き込み
ファイルにデータを書き込むには、取得した TextStream オブジェクトに対して Write・・・ 関数を使用します。
Set ts = fso.OpenTextFile("D:\Tips.txt", ForWriting, True) ' 指定したパスにファイルを作成する
ts.Write ("文字列") ' 文字列の書き込み
ts.WriteLine ("改行付き") ' 最後に改行を付けて書き込み
ts.WriteBlankLines (3) ' 空行を指定の数だけ書き込み
ts.Close ' ファイルを閉じる
詳しくは「ファイルの書き込み」をご覧ください。
スポンサーリンク