Nhập nhiều bảng tính Excel vào một bảng Access duy nhất

Nhập nhiều bảng tính Excel vào một bảng Access duy nhất

Xin chào,

Đoạn mã sau trên thực tế nhập các bản ghi có trong các tệp Excel được chứa trong một thư mục nhất định. Tất cả các tệp Excel đều được đặt tên theo quy ước đặt tên sau:

  • ExportProd1
  • ExportProd2
  • ExportProd3, v.v. (đến 'ExportProd75')

Tuy nhiên, nó bị mắc vào một vòng luẩn quẩn trong đó nó liên tục chỉ nhập các bản ghi từ các tệp Excel 'ExportProd1', 'ExportProd10', 'ExportProd11', 'ExportProd12' và 'ExportProd13'. Tổng số hồ sơ của tôi từ tất cả 75 tệp là khoảng 2,4 triệu. Hoạt động lặp lại khiến tổng số tăng vượt trội lên tới 11 triệu trước khi cơ sở dữ liệu gặp sự cố.

Đây là mã. Tại sao nó lặp lại như vậy thay vì đi qua tất cả 75 tệp trong thư mục theo thứ tự? Tất cả các tệp được đặt tên duy nhất:

Cơ sở dữ liệu so sánh tùy chọn

Hàm Impo_allExcel ()

Làm mờ tệp tin của tôi
Làm mờ đường đi của tôi
mypath = "C: \ PDooley_Projects \ CompanyName \ Customer_Integration \ Oracle_export \"
Làm
myfile = Dir (mypath & "* .xls")
'điều này sẽ nhập TẤT CẢ các tệp excel (từng tệp một, nhưng tự động) trong thư mục này. Hãy chắc chắn rằng đó là những gì bạn muốn.
DoCmd.TransferS Spreadsheet acImport, 8, "Contacts_AVDC_NEW", mypath & myfile
myfile = Dir
Vòng lặp Cho đến khi myfile = ""

Kết thúc chức năng

Tôi hy vọng mình có thể điều chỉnh mã này để ngăn chặn vòng lặp này, nếu không, tôi sẽ phải nhập từng tệp Excel đơn lẻ vào cơ sở dữ liệu Access của mình tại một thời điểm.

Cảm ơn bạn.





Câu trả lời:

Hãy thử sửa đổi này.

Hàm Impo_allExcel ()

Làm mờ tệp tin của tôi
Làm mờ đường đi của tôi


mypath = "C: \ PDooley_Projects \ CompanyName \ Customer_Integration \ Oracle_export \"
ChDir (MyPath)

myfile = Dir ()
Làm trong khi MyFile <> ""
Nếu MyFile Thích "* .xls" THÌ
'điều này sẽ nhập TẤT CẢ các tệp excel
'(từng cái một, nhưng tự động) trong thư mục này.
'Hãy chắc chắn rằng đó là những gì bạn muốn.
DoCmd.TransferS Spreadsheet acImport, 8, "Contacts_AVDC_NEW", mypath & myfile
Kết thúc nếu
myfile = Dir ()
Wend

Kết thúc chức năng



Câu trả lời:

Chào Pat

Vấn đề là Dir đầu tiên (cái có đối số) không được ở bên trong vòng lặp.

Gọi Dir (đường dẫn) tạo một "ngữ cảnh" mới và trả về tệp đầu tiên phù hợp với đặc điểm kỹ thuật đã cho.

Gọi Dir không có đối số trả về tệp tiếp theo trong ngữ cảnh hiện tại.

Tuy nhiên, bạn đang tạo một ngữ cảnh mới mọi lúc xung quanh vòng lặp, do đó, đặt lại tìm kiếm và trả về cùng một tệp lặp đi lặp lại. Vì vậy, hãy di chuyển lệnh gọi Dir () đầu tiên lên trước lệnh "Do".

Lời chúc tốt nhất,
Graham

Comments

Popular posts from this blog

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Không thể hạn chế quyền trên tệp MS excel cho mac