作者:
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
作者: soyoso (我是耀宗) 2019-07-26 09:31:00
以內文來調整的話1.可宣告一個較大個數的陣列變數,再迴圈內也設個累加變數(變數=變數+1)的方式寫入2.不設固定的陣列變數的話,可以redim preserve來動態調整另外內文的巨集會有錯誤,有do沒有loop