作者genow ()
看板Office
标题[算表] VBA读取CSV档,动态阵列大小问题
时间Fri Jul 26 09:00:40 2019
软体: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维阵列大小,仅是将其当一个变数
随着每行一直增加,其值一直被覆盖
请问我该怎麽解决呢 感谢回复
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 117.56.73.248 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1564102842.A.33E.html
※ 编辑: genow (117.56.73.248 台湾), 07/26/2019 09:03:04
1F:→ soyoso: 确认csv行数,可google excel vba count number of lines 07/26 09:21
2F:→ soyoso: in a csv 07/26 09:21
3F:→ soyoso: 或是要读入到变数,也可goole excel vba read csv into 07/26 09:23
4F:→ soyoso: array 07/26 09:23
5F:→ genow: 谢谢 我来尝试看看 07/26 09:30
6F:→ soyoso: 以内文来调整的话1.可宣告一个较大个数的阵列变数,再回圈 07/26 09:31
7F:→ soyoso: 内也设个累加变数(变数=变数+1)的方式写入 07/26 09:32
8F:→ soyoso: 2.不设固定的阵列变数的话,可以redim preserve来动态调整 07/26 09:33
9F:→ soyoso: 另外内文的巨集会有错误,有do没有loop 07/26 09:34
10F:推 cutekid: 用一个暂存工作表去存,不用考虑阵列大小 07/26 10:52