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