Nhập trang tính bằng Excel VBA
Dưới đây, chúng ta sẽ xem xét một chương trình trong Excel VBA nhập các trang tính từ các tệp Excel khác vào một tệp Excel.
Tải xuống Book4.xlsx, Book5.xlsx và thêm chúng vào “C: \ test \”
Tình huống:
Thêm các dòng mã sau vào nút lệnh:
-
Đầu tiên, chúng ta khai báo hai biến kiểu String, một đối tượng Worksheet và một biến kiểu Integer.
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
-
Tắt cập nhật màn hình và hiển thị cảnh báo.
Application.ScreenUpdating = False Application.DisplayAlerts = False
-
Khởi tạo thư mục biến. Chúng tôi sử dụng hàm Dir để tìm .xl đầu tiên ?? tệp được lưu trữ trong thư mục này.
directory = "c:\test\" fileName = Dir(directory & ".xl??")
Lưu ý: Hàm Dir hỗ trợ việc sử dụng nhiều ký tự đại diện (*) và ký tự đơn (?) Để tìm kiếm tất cả các loại tệp Excel khác nhau.
-
Biến fileName bây giờ giữ tên của tệp Excel đầu tiên được tìm thấy trong thư mục. Thêm vòng lặp Do While.
Do While fileName <> "" Loop
Thêm các dòng mã sau (tại 5, 6, 7 và 8) vào vòng lặp.
-
Không có cách nào đơn giản để sao chép trang tính từ các tệp Excel đã đóng.
Do đó, chúng tôi mở tệp Excel.
Workbooks.Open (directory & fileName)
-
Nhập các trang tính từ tệp Excel vào import-sheet.xlsm.
For Each sheet In Workbooks(fileName).Worksheets total = Workbooks("import-sheets.xlsm").Worksheets.count Workbooks(fileName).Worksheets(sheet.Name).Copy _ after:=Workbooks("import-sheets.xlsm").Worksheets(total) Next sheet
Giải thích: biến tổng lưu giữ tổng số trang tính của import-sheet.xlsm. Chúng tôi sử dụng phương pháp Sao chép của đối tượng Trang tính để sao chép từng trang tính và dán nó vào sau trang tính cuối cùng của import-sheet.xlsm.
-
Đóng tệp Excel.
Workbooks(fileName).Close
-
Hàm Dir là một hàm đặc biệt. Để lấy các tệp Excel khác, bạn có thể sử dụng lại hàm Dir mà không có đối số.
fileName = Dir()
Lưu ý: Khi không còn tên tệp nào trùng khớp, hàm Dir trả về một chuỗi có độ dài bằng không (“”). Kết quả là Excel VBA sẽ rời khỏi vòng lặp Do While.
-
Bật cập nhật màn hình và hiển thị lại cảnh báo (bên ngoài vòng lặp).
Application.ScreenUpdating = True Application.DisplayAlerts = True
-
Chạy thử chương trình.
Kết quả: