Đọc dữ liệu từ tệp văn bản bằng Excel VBA
Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA đọc dữ liệu từ một tệp văn bản. Tệp này chứa một số tọa độ địa lý mà chúng tôi muốn nhập vào Excel.
Tình huống:
-
Đầu tiên, tải xuống tệp văn bản và thêm nó vào “C: \ test \”
Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã sau:
-
Chúng tôi khai báo bốn biến. myFile của loại Chuỗi, văn bản của loại Chuỗi, dòng văn bản của loại Chuỗi, posLat thuộc loại Integer và posLong thuộc loại Integer.
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
-
Chúng ta cần khởi tạo biến myFile với đường dẫn đầy đủ và tên tệp.
myFile = "C:\test\geographical-coordinates.txt"
hoặc sử dụng phương thức GetOpenFilename của đối tượng Ứng dụng để hiển thị hộp thoại Mở tiêu chuẩn và chọn tệp (mà không thực sự mở tệp).
myFile = Application.GetOpenFilename()
Lưu ý: phần trống giữa các dấu ngoặc có nghĩa là chúng tôi không cung cấp cho Excel VBA làm đầu vào. Đặt con trỏ của bạn trên GetOpenFilename trong Visual Basic Editor và nhấp vào F1 để được trợ giúp về các đối số.
-
Thêm dòng mã sau:
Open myFile For Input As #1
Lưu ý: câu lệnh này cho phép đọc tệp. Chúng ta có thể coi tệp là số 1 trong phần còn lại của mã.
-
Thêm các dòng mã sau:
Do Until EOF(1) Line Input #1, textline text = text & textline Loop
Lưu ý: cho đến khi kết thúc tệp (EOF), Excel VBA đọc một dòng duy nhất từ tệp và gán nó vào dòng văn bản. Chúng tôi sử dụng toán tử & để nối (nối) tất cả các dòng đơn và lưu trữ nó trong văn bản biến.
-
Đóng tệp.
Close #1
-
Tiếp theo, chúng ta tìm kiếm vị trí của các từ vĩ độ và kinh độ trong biến văn bản. Chúng tôi sử dụng chức năng hướng dẫn.
posLat = InStr(text, "latitude") posLong = InStr(text, "longitude")
-
Chúng tôi sử dụng các vị trí này và hàm Mid để trích xuất tọa độ từ văn bản biến và ghi tọa độ vào ô A1 và ô A2.
Range("A1").Value = Mid(text, posLat + 10, 5) Range("A2").Value = Mid(text, posLong + 11, 5)
-
Chạy thử chương trình.
Kết quả: