作者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/m.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