怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - テキストファイルに書き込む(FileSystemObject)

FileSystemObject を使ったテキストファイルへの書き込み方法を解説する。

新規作成、上書き、追記、それぞれの方法を載せる。

ファイルを新規作成する

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'テキストファイルを作成する
Dim ts
Set ts = fso.CreateTextFile("C:\tmp\TextFile1.txt")
'文字列を書き込む
ts.WriteLine "Hello World!"
'テキストファイルを閉じる
ts.Close
Set ts = Nothing
Set fso = Nothing

テキストファイルの新規作成の流れ。

  1. FileSystemObject.CreateTextFile メソッドでファイルを新しく作る。
    → TextStream オブジェクトが返る。

  2. TextStream.WriteLine メソッドで文字列を書き込む。

    WriteLine は文字列の末尾にプラットフォーム固有の改行文字を自動で追加する。
    もし改行文字がいらなければ Write メソッドを使う。

  3. TextStream.Close メソッドでファイルを閉じる。

既存のファイルを上書きする

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'テキストファイルを書き込みモードで開く
'(第2引数の 2 は上書きを意味する)
Dim ts
Set ts = fso.OpenTextFile("C:\tmp\TextFile1.txt", 2)
'文字列を書き込む
ts.WriteLine "Overwrite Hello World!"
'テキストファイルを閉じる
ts.Close
Set ts = Nothing
Set fso = Nothing

上書きモードでファイルを開くのがポイント。

あとは新規作成時と変わりない。

既存のファイルに追記する

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'テキストファイルを書き込みモードで開く
'(第2引数の 8 は追記を意味する)
Dim ts
Set ts = fso.OpenTextFile("C:\tmp\TextFile1.txt", 8)
'文字列を書き込む
ts.WriteLine "Append Hello World!"
'テキストファイルを閉じる
ts.Close
Set ts = Nothing
Set fso = Nothing

追記モードでファイルを開くのがポイント。

あとは新規作成時と変わりない。

シフトJIS または UTF-16 LE/BE しか扱えない

TextStream オブジェクトが扱える文字コードは、シフトJIS または UTF-16 LE/BE である。

最近の主流である UTF-8 は文字化けしてしまうので注意しなければならない。

シフトJISUTF-16 LE/BE 以外の文字コードのファイルを扱う場合は ADODB.Stream を使う。