VBScriptでは「FileSystemObject」を使用することで様々なファイル操作を行えます。
ここでは、ファイルの作成(CreateTextFile)方法について解説します。
合わせて、作成したファイルに文字列を書き込んでみます。
書式
まずは、CreateTextFileメソッドの書式になります。
object.CreateTextFile(filename,[overwrite,[unicode]]) ファイルシステムオブジェクト.CreateTextFile(作成するファイル,[上書き可否,[文字コード]])
各引数について解説します。
| パーツ | 和名 | 説明 | 省略 |
|---|---|---|---|
| object | オブジェクト | ファイルシステムオブジェクトを指定する | 不可 |
| filename | ファイル名 | 作成するファイルを指定する | 不可 |
| overwrite | 上書き可否 | 作成するファイルが既に存在する場合に上書きするかを指定 True:上書きを許可(既定値) False:上書きを許可しない | 可能 |
| unicode | 文字コード | Unicodeでファイルを作成するかを指定 True:Unicode False:ASCII(Shift-JIS)(既定値) | 可能 |
ソースコード
サンプルのソースコードと実際に実行した時の動きについて解説します。
引数1[ファイル名]のみを指定
第一引数のファイル名のみを指定した、一番シンプルな構成になります。
Option Explicit
' 作成するファイル
Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt"
' 宣言
Dim fso
' ファイルシステムオブジェクトの作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルの作成
Call fso.CreateTextFile(CREATE_FILE)
' ファイルシステムオブジェクトの破棄
Set fso = Nothing
このサンプルを実行する下記の条件で空ファイルが作成されます。
・パス:C:\workspace\VBScript\sample
・ファイル名:Test.txt
・ファイルの内容:0バイト(空ファイル)
・文字コード:Shift-JIS
引数2[上書き可否]を指定
第一引数のファイル名に加え、第二引数の上書き可否も指定したサンプルになります。
ここでは、上書き可否の設定を既定値ではない、False(上書きを許可しない)を確認してみます。
Option Explicit
' 作成するファイル
Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt"
' 宣言
Dim fso
' ファイルシステムオブジェクトの作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルの作成
Call fso.CreateTextFile(CREATE_FILE, False)
' ファイルシステムオブジェクトの破棄
Set fso = Nothing
上書きを許可しない設定で、既に作成するファイルが存在する状態でスクリプトを実行すると、以下のようなエラー(既に同名のファイルが存在しています。)が表示されます。

引数3[文字コード]を指定
設定可能な全ての引数を設定したサンプルになります。
ここでは、上書き可否は既定値のTrue(上書きを許可する)、文字コードは既定値ではないTrue(Unicode)の組み合わせで確認してみます。
Option Explicit
' 作成するファイル
Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt"
' 宣言
Dim fso
' ファイルシステムオブジェクトの作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルの作成
Call fso.CreateTextFile(CREATE_FILE, True, True)
' ファイルシステムオブジェクトの破棄
Set fso = Nothing
このスクリプトを実行すると、下記のように文字コードが「Unicode」のファイルが作成されます。
(Unicodeで作成した場合は、BOMも付与されるようです)

ファイルを作成し、内容を書き込む
CreateTextFileメソッドでは、ファイルの作成に加え、文字列を書き込むことも可能です。
ここでは、Shift-JISでファイルを作成しつつ、「書き込みテスト」と出力してみます。
Option Explicit
' 作成するファイル
Const CREATE_FILE = "C:\workspace\VBScript\sample\Test.txt"
' 宣言
Dim fso, data
' ファイルシステムオブジェクトの作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルの作成とオープン
Set data = fso.CreateTextFile(CREATE_FILE)
' 文字列の書き込み
data.WriteLine("書き込みテスト")
' ファイルのクローズ
data.Close
' ファイルシステムオブジェクトの破棄
Set fso = Nothing
このサンプルを実行すると、下記のようにファイルを作成しつつ、文字列を書き込むことが可能です。



コメント