[算表] 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