前提・実現したいこと
フォルダ内にあるテキストファイルを上から順番に開き
1行目から読み込み、任意の文字列を含む行と更に別の任意の文字列に挟まれた数値データ(カンマ区切り)を
三次元配列に入れたいです。
例として、
sample1.txt
2,4,2,5
2,2,2,2
A
1,4,5,5,7,,,
2,3,5,7,4,,,
2,4,4,8,7,,,
2,3,5,7,3,,,
2,4,1,0,7,,,
B
0,0,3,,
0,1,4,,
0,3,2,,
0,5,3,,
C
1011,1,1,1,0,0,0,,,,
1012,1,1,1,0,0,0,,,,
1013,1,1,1,0,0,0,,,,
1014,1,1,1,0,0,0,,,,
X
1,1,1
1,1,1
1,1,1
sample2.txt
sample3.txt
上記のようなテキストファイルがあったときに
1.AとBの間の数値データをカンマで区切り、arrayAに入れる。
2.BとCの間の数値データをカンマで区切り、arrayBに入れる。
2.CとXの間の数値データをカンマで区切り、arrayCに入れる。
4.X以降は不要
5.どのファイルもA,B,CおよびXの文字列があり、1行あたりの要素数は同じです。
条件として、
1.それぞれの数値データの行数は不定です。
2.三次元配列array~(i,j,k)としたとき、
i = 読込んだファイルの順番
j = 行数
k = 要素数
としたいです。
3.配列の最小値は0ではなく1から始めたいです。
なお、読み込むファイルの数はfile_num、読み込むファイル名はsample_FileName(i)にそれぞれ格納しています。
一部を削っているかつ不完全なため、お見苦しいかと存じますが、
下記に現在作成中のコードを記載いたしますので、何卒お力添えを頂けますよう、
よろしくお願いいたします。
該当のソースコード
Sub input(file_num,sample_FileName) Dim intFF As Integer 'FreeFile値 Dim myRec As String '読み込んだレコード内容 Dim myAry As Variant 'レコードを分割したデータ Dim i As Long For i = 1 To file_num intFF = FreeFile On Error GoTo err_on 'ファイルが見つからないときの処理 Open sample_FileName(i) For Input As #intFF On Error GoTo 0 Do Until EOF(intFF) Line Input #intFF, myRec myAry = Split(myRec, ",") Dim data_index As String Dim j As Long Select Case myAry(0) 'データ判定 Case "A": data_index = "A": j = 1 Case "B": data_index = "B": j = 1 Case "C": data_index = "C": j = 1 Case Val(myAry(0)) = 0: data_index = "X" End Select Select Case data_index Case "A" j = j + 1 Case "B" j = j + 1 Case "C" j = j + 1 End Select Loop Close #intFF Next i err_on: MsgBox " 指定したデータがありません。" Close Application.StatusBar = "エラー終了しました。 " End End Sub
補足情報(FW/ツールのバージョンなど)
Excelバージョン:2013
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。