VBScript: ファイルを読み込み、配列に格納する

VBScriptでファイルを読み込んで、 内容を1行ずつ配列に格納する方法を紹介します。
VBScriptにはファイル読み込みと配列格納を一発で出来る関数がないので、 自分でロジックを構築する必要があります。

ここで紹介するのは次の2つの方法です。

  • ファイルを全行読み込んで、改行で分割して配列に格納する
  • ファイルを1行ずつ読み込んで、動的配列に格納する

ファイルを全行読み込んで、改行で分割して配列に格納する

次のサンプルコードでは、まずテキストファイル「a.txt」 をReadAllメソッドで全行読み込みます。

次にSplit関数を使って、改行文字で分割して配列に格納しています。

読み込むファイルのサイズが小さい場合は この方法で十分だと思います。

' ファイルパス
strFile = "d:\test\vbs\a.txt"

'ファイルシステムオブジェクト作成
Set objFS = CreateObject("Scripting.FileSystemObject")

' ファイルオープン
Set objText = objFS.OpenTextFile(strFIle)

' 全行読み込む
strText = objText.ReadAll

' ファイルクローズ
objText.Close

' 改行で分割
arrText = Split(strText, vbCrLf)

' 配列の内容を1行ずつ表示
For i = 0 To UBound(arrText)
	WScript.Echo arrText(i)
Next

ファイルを1行ずつ読み込んで、動的配列に格納する

次のサンプルコードではテキストファイル「a.txt」 を1行ずつ読み込んで、動的配列に格納しています。

「ReDim Preserve」で動的配列の要素数を変更しながら、 ReadLineメソッドで1行ずつ読み込んで配列に格納しています。

サイズの大きいファイルを読み込む場合は、 こちらの方が安全です。

' ファイルパス
strFile = "d:\test\vbs\a.txt"

'動的配列を宣言
Dim arrText()

'ファイルシステムオブジェクト作成
Set objFS = CreateObject("Scripting.FileSystemObject")

' ファイルオープン
Set objText = objFS.OpenTextFile(strFIle)

' カウンタ
i = 0

' AtEndOfLine が True になるまでループ
Do While objText.AtEndOfLine <> True
	
	'配列の要素数を変更
	ReDim Preserve arrText(i)
	
	' 1行読み込む
	arrText(i) = objText.ReadLine
	
	i = i + 1

Loop

' ファイルクローズ
objText.Close

' 配列の内容を1行ずつ表示
For i = 0 To UBound(arrText)
	WScript.Echo arrText(i)
Next
VBScript入門