FileSystemObjectのCreateTextFileメソッド
FileSystemObjectクラスのCreateTextFileメソッドは、指定されたファイル名でテキストファイルを作成します。ファイル作成後のファイルへの書き込みやファイルを閉じる場合はCreateTextFileメソッドの戻り値のTextStreamオブジェクトを利用します。
同じFileSystemObjectクラスのOpenTextFileメソッドでもファイル作成は可能ですが、メソッド名からファイル作成(Create)であることを明示したい場合はCreateTextFileメソッドを利用する利点があります。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function CreateTextFile(FileName As String, [Overwrite As Boolean = True], [Unicode As Boolean = False]) As TextStream
FileName | 作成するファイルパスを指定します。
ファイル名だけを指定した場合はカレントディレクトリに作成されます。 存在しないファイルパスが指定された場合は実行時エラー76「パスが見つかりません。」が発生します。ファイルが存在していても他のアプリケーションが先に開いている場合は実行時エラー70「書き込みできません。」が発生します。 |
Overwrite | 既に同名ファイルが存在する場合に上書きするかどうかを指定します。省略時はTrueとして扱われます。
Trueの場合は上書きを行い、Falseの場合は上書きしません。Falseを指定した場合で同名ファイルが存在する場合は実行時エラー58「既に同名のファイルが存在しています。」が発生します。 |
Unicode | 文字コードのUnicodeとASCIIのどちらかを選択します。省略時はFalse扱いになります。
Trueを指定するとUnicode、Falseを指定するとASCIIになります。 なお、UnicodeはUTF-8ではなくDBCS言語換算のすべての文字が2バイトで扱われる文字コードで、UTF-8(半角英数は1バイト、半角カナは3バイト、全角は3~5バイト)とは異なります。 |
戻り値 | 対象ファイルの操作を行うためのTextStreamクラスオブジェクトを返します。
通常は事前にTextStreamクラスオブジェクトの変数を用意しておき、その変数に対してSetステートメントで戻り値を受け取るようにコーディングします。 |
エラー対応
CreateTextFileメソッドでは、元のファイルがない場合や上書き禁止のファイルを扱う場合などの要因でエラーが発生することがあります。
これらのエラーが発生するとメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
ファイルを作成するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub FileSystemObjectCreateTextFile() '// エラー発生時も処理を継続 On Error Resume Next Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim ts As TextStream '// TextStreamクラス Dim sFilePath '// ファイルパス '// ファイルパスを指定 sFilePath = "C:\test\c.txt" '// ファイルを作成 Set ts = fso.CreateTextFile(Filename:=sFilePath, Overwrite:=True, Unicode:=False) '// ファイルを閉じる ts.Close '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
指定したファイルパスのテキストファイルを新規作成して閉じる単純なコードです。
CreateTextFileメソッドはファイルが他のアプリケーションで排他されている場合などにエラーが起こるため、サンプルコードにはエラー処理「On Error Resume Next」でエラーが発生しても処理を継続するようにしています。
エラーが発生した場合はその内容をイミディエイトウィンドウに出力します。
FileSystemObjectやTextStreamのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。