Dữ liệu, dữ liệu, dữ liệu – nếu không có nó thì cơ sở dữ liệu sẽ gần như vô dụng. Vì vậy, không có gì ngạc nhiên khi một trong những câu hỏi thường gặp nhất khi nói đến việc đưa dữ liệu vào bảng Access của bạn là – làm thế nào để tôi có thể dễ dàng hơn khi phải thường xuyên nhập rất nhiều (và rất nhiều!) tập tin? Vì đây là một công việc rất phổ biến, rõ ràng là có một số cách để giải quyết vấn đề này, nhưng ở đây chúng ta sẽ chỉ xem xét một cách – theo tôi là cách dễ nhất – đặc biệt nếu bạn đang thực hiện việc này thường xuyên, hoặc thậm chí theo lịch trình. Một chút lập kế hoạch (và tôi thực sự muốn nói là chỉ một chút!) và một chút phép thuật VBA là bạn sẽ sẵn sàng – hãy đọc tiếp để bắt đầu…
Nhập tất cả các tệp Excel trong một thư mục
Đối với bài viết này, chúng ta sẽ xem xét việc nhập một số tệp Excel trong một thư mục nhất định, nhưng bạn có thể dễ dàng nhập tệp csv, v.v. – chúng ta sẽ sớm thảo luận về cách thay đổi mã để xử lý tệp csv.
Đầu tiên, hãy xác định những gì chúng ta muốn mã thực hiện:
“Chúng tôi muốn nhập tất cả các tệp từ một thư mục nhất định vào một bảng hiện có – chúng tôi cũng muốn chỉ định xem các tệp có dòng tiêu đề hay không”
Có vẻ đủ đơn giản, vì vậy hãy xem mã để làm điều này:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
Đang kiểm tra sự cố…

OK - điều đầu tiên đầu tiên. Để giữ cho mã có thể sử dụng được trong các trường hợp khác nhau nhất có thể, chúng tôi yêu cầu tên đường dẫn (nơi lưu trữ các tệp), tên của bảng bạn muốn nhập các tệp này vào và liệu tất cả các tệp trong thư mục này có một tiêu đề hay không (nghĩa là tên trường có xuất hiện trên hàng đầu tiên của bảng tính).
Bạn sẽ nhận thấy rằng phần mã tìm kiếm tệp – Dir(path & “\*.xls”) – nối thêm ký tự đại diện và phần mở rộng tệp vào đường dẫn được cung cấp. Tôi đề cập đến điều này vì sẽ rất dễ dàng để thay đổi mã nếu, ví dụ: bạn chỉ muốn nhập các tệp khớp với một quy ước đặt tên cụ thể (ví dụ: tất cả các tệp có “tháng 2017” hoặc “XNUMX” trong tên tệp ). Bạn có thể, nếu muốn, thậm chí thêm bộ lọc đó làm tham số cho lệnh gọi chương trình con.
Dù sao đi nữa, nếu một tệp phù hợp với tiêu chí đã cho (bất kỳ tệp “.xls” nào trong thư mục sử dụng trong trường hợp này), nó sẽ ngay lập tức cố gắng nhập tệp đó bằng cách sử dụng lệnh TransferSpreadsheet.
Thay đổi mã ở đâu cho phù hợp với nhu cầu của bạn…
Tại thời điểm này, bạn có thể thay đổi mã để thay vì nhập một bảng tính, nó sẽ nhập các tệp csv (sử dụng lệnh “TransferText”), v.v.
Sau đó, mã sẽ lặp lại cho đến khi không còn tệp nào để nhập trong thư mục đó.
Đó là một đoạn mã nhỏ, nhưng tôi chắc chắn rằng bạn sẽ thấy mình sử dụng đi sử dụng lại nhiều lần!
Giới thiệu tác giả:
Mitchell Pond là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm sửa chữa tham nhũng SQL và các sản phẩm phần mềm phục hồi excel. Để biết thêm thông tin, hãy truy cập www.datanumennăm