Đọc file csv trong excel

Đọc file csv trong excel, và ứng dụng thực tế

27

Đọ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. 

1. CSV là gì?

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:

  • Dấu , dùng để ngăn cách các cột.
  • Mỗi lần xuống dòng là một dòng dữ liệu.
A B C
Ma Ten Tuoi
01 An 20
02 Binh 25
03 Cuong 30

2. Ví dụ đọc file css từ VBA

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 Sub

Giải thích code

Dim dong As String

Dim 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 #1

Dò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"

3. Một số kinh nghiệm trong đọc file csv

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.

Bài viết liên quan:

Đọc file csv trong excel, và ứng dụng thực tế