[算表] VBA读取CSV档,动态阵列大小问题

楼主: genow   2019-07-26 09:00:40
软件:EXCEL
版本:2010
您好
我用VBA读取一个不特定大小的CSV档,我的想法是
1、开启对话视窗,由使用者点选读入档案
2、纪录档案位置的路径
3、OPEN该档案并读入2维阵列
Sub 读资料()
Application.FileDialog(msoFileDialogFilePicker).Show
spath = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
Open spath For Input As #1
Do Until EOF(1)
Line Input #1, INPUTDATA
End Sub
遇到的问题是:
读入的CSV档案大小不是固定的,只知道是用","分隔
所以我必须要先确认读入的CSV档案大小(也就是行数及列数)
我才有办法去宣告2维阵列的大小
然后在一行一行的将资料读入2维阵列中
但是上面程式的写法并没有宣告2维阵列大小,仅是将其当一个变量
随着每行一直增加,其值一直被覆蓋
请问我该怎么解决呢 感谢回复
作者: soyoso (我是耀宗)   2019-07-26 09:21:00
确认csv行数,可google excel vba count number of linesin a csv或是要读入到变量,也可goole excel vba read csv intoarray
楼主: genow   2019-07-26 09:30:00
谢谢 我来尝试看看
作者: soyoso (我是耀宗)   2019-07-26 09:31:00
以内文来调整的话1.可宣告一个较大个数的阵列变量,再循环内也设个累加变量(变量=变量+1)的方式写入2.不设固定的阵列变量的话,可以redim preserve来动态调整另外内文的宏会有错误,有do没有loop
作者: cutekid (可爱小孩子)   2019-07-26 10:52:00
用一个暂存工作表去存,不用考虑阵列大小

Links booklink

Contact Us: admin [ a t ] ucptt.com