投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/10/15 20:00:35
> 一列ごとに配列に格納する方法

えぇと…2行4列構成の
111 222 333 444
555 666 777 888
というテキストファイルがあったと仮定して:

data(0, 0) = "111"
data(1, 0) = "555"
data(0, 3) = "444"
data(1, 3) = "888"
のような「2 次元配列」になればよいのでしょうか。

それとも
col1(0) = "111"
col1(1) = "555"
col4(0) = "444"
col4(1) = "888"
のように、列それぞれで別々の「1 次元配列」に入れたいのでしょうか。

あるいは、1列目~4列目の情報を行ごとの配列に入れて
data(0)(0) = "111"
data(1)(3) = "888"
のように、「配列の配列」として管理したいのでしょうか。


また、お使いの開発言語とバージョンは何でしょうか?


ファイルの文字コードなど、仕様として明らかになっていない点が多々ありますが、
ひとまず、ジャグ配列として取得する場合の例を挙げてみます。

VB2010 以降の場合
Dim fileName As String = "C:\test\example.txt"
Dim data()() As String = System.IO.File.ReadLines(fileName, _
    System.Text.Encoding.GetEncoding("Shift_JIS")).Select(AddressOf Split).ToArray()



VBA の場合
Dim fileName As String
fileName = "C:\test\example.txt"
Dim data() As Variant    'この変数に格納する 

Dim fno As Integer
fno = FreeFile(0)
Open fileName For Binary Access Read As #fno
Dim lines() As String
lines = Split(StrConv(InputB(LOF(fno), fno), vbUnicode), vbCrLf)
Close #fno: fno = 0
ReDim data(UBound(lines)) As Variant
Dim r As Long
For r = LBound(data) To UBound(data)
    data(r) = Split(lines(r), " ")
Next
Erase lines



VBScript の場合
Option Explicit
Dim fileName
fileName = "C:\test\example.txt"
Dim data  'この変数に格納する 

Const adTypeText = 2
Const adReadLine = -2
Dim d, stm
Set d = CreateObject("Scripting.Dictionary")
Set stm = CreateObject("ADODB.Stream")
stm.Open
stm.Type = adTypeText
stm.Charset = "Shift_JIS"
stm.LoadFromFile fileName
Do Until stm.EOS
    d.Add CStr(d.Count), Split(stm.ReadText(adReadLine), " ")
Loop
stm.Close
Set stm = Nothing
data = d.Items()
Set d = Nothing