学習目的です。解説をお願いしたいです。
予想ではhairetu(3)(0)に改行(目には見えませんが)が入っていると思ったのですがエラーになりました。
UBound関数で確認すると-1が出力されます。UBound関数は最大のインデックス番号を出力すると思うのですが、-1はどういった意味なのでしょうか?
また、hairetu(3)(0)に改行(もしくは改行コードvbCrLf)を格納するにはどのような方法がありますか?
VBScript
1Dim hairetu 2hairetu = csvHairetuKakunou("test.csv") 'csvからジャグ配列に格納 3msgbox UBound(hairetu(3)) '-1と表示される 4 5msgbox hairetu(1)(2) '12と表示される 6'msgbox hairetu(3)(0) 'インデックスが有効範囲にありません。とエラーになる 7'msgbox hairetu(-1)(0) 'インデックスが有効範囲にありません。とエラーになる
下記でcsvファイルから配列に格納します。
VBScript
1Function csvHairetuKakunou(inFile) '戻り値にジャグ配列 2'csv形式のファイルジャグ配列に格納する。,区切り 3 'inFile:ファイルのパス 4 Dim fso 'ファイルを操作する準備 5 Set fso = WScript.CreateObject("Scripting.FileSystemObject") 6 Dim inputFile 7 Set inputFile = fso.OpenTextFile(inFile, 1, False) '読み取り専用でファイルを開く。 8 Dim Arr() 'データを格納する配列 9 Dim dataLine '一行のデータを一時的に入れる変数 10 Dim i 'ループ変数 11 i = 0 12 Do Until inputFile.AtEndOfStream 'ファイルの終端になるまで繰り返し 13 dataLine = inputFile.ReadLine 'ファイルを1行読み込んで次の行の先頭にポインタを移動。 14 Redim Preserve strArr(i) '動的配列の格納データを保持したまま最大インデックスiに変更 15 strArr(i) = Split(dataLine, ",") 'Split(文字列,区切り文字)文字列を区切り文字ごとに配列に格納する 16 i = i + 1 17 Loop 18 csvHairetuKakunou = strArr 19End Function
test.csv
100,01,02,03 210,11,12,13,14 320,21,22,23 4 540,41,42,43 650,51,52,53,54
上記test.csvファイル内です。間が空いてる部分は何もない改行です。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 09:12
2020/09/10 10:15
2020/09/10 23:43
2020/09/11 05:26