Đọc file CSV trong VBA Excel cho người mới học, hiểu bản chất ứng dụng linh hoạt vào công việc.
CSV là một file dữ liệu dạng văn bản.
Ví dụ file dulieu.csv có nội dung:
Ma,Ten,Tuoi 01,An,20 02,Binh,25 03,Cuong,30
Có thể hiểu:
| A | B | C |
|---|---|---|
| Ma | Ten | Tuoi |
| 01 | An | 20 |
| 02 | Binh | 25 |
| 03 | Cuong | 30 |
Sub DocCSV()
Dim dong As String
Open "D:\data\dulieu.csv" For Input As #1
Do While Not EOF(1)
Line Input #1, dong
Debug.Print dong
Loop
Close #1
End SubGiải thích code
Dim dong As StringDim có nghĩa là khai báo biến.
Ở đây ta tạo một biến tên là:
dong
Kiểu dữ liệu là:
String
String dùng để chứa chuỗi ký tự.
Ví dụ:
dong = "01,An,20"
thì biến dong đang chứa:
01,An,20
Open "D:\data\dulieu.csv" For Input As #1Dòng này có nghĩa:
Mở file dulieu.csv để đọc dữ liệu và đặt số hiệu cho file là 1.
Tách ra:
Open
= mở file.
"D:\data\dulieu.csv"
= đường dẫn tới file.
For Input
= mở file để đọc.
As #1
= đặt file đang mở là file số 1.
Có thể hình dung:
File dulieu.csv ↓ Open ↓ File #1
Sau khi thực hiện:
Open "D:\data\dulieu.csv" For Input As #1
VBA biết rằng file số 1 chính là file dulieu.csv.
Do While là gì?
Do While Not EOF(1)
Đây là một vòng lặp.
Có thể hiểu đơn giản:
Trong khi file số 1 chưa đọc hết thì tiếp tục đọc.
EOF là viết tắt của End Of File, nghĩa là cuối file.
Ví dụ file:
Ma,Ten,Tuoi 01,An,20 02,Binh,25 03,Cuong,30
Khi mới mở file thì chưa đến cuối file.
EOF(1) = False
Ta có:
Not EOF(1)
tức là:
Not False = True
Do đó vòng lặp tiếp tục chạy.
Line Input làm gì?
Line Input #1, dong
Dòng này có nghĩa:
Đọc một dòng trong file số 1 và đưa vào biến dong.
Ví dụ file:
Ma,Ten,Tuoi 01,An,20 02,Binh,25 03,Cuong,30
Lần đầu chạy:
Line Input #1, dong
thì:
dong = "Ma,Ten,Tuoi"
Lần thứ hai:
dong = "01,An,20"
Lần thứ ba:
dong = "02,Binh,25"
Lần thứ tư:
dong = "03,Cuong,30"
Cách:
Split(dong, ",")
phù hợp với CSV đơn giản.
Ví dụ:
01,An,20
Nhưng nếu CSV có dữ liệu:
01,"Nguyen, Van An",20
thì dấu phẩy bên trong "Nguyen, Van An" sẽ làm Split tách sai.
Trong trường hợp đó cần sử dụng cách đọc CSV chuyên dụng hơn.
Đọc file csv trong excel, và ứng dụng thực tế