Cách sao chép nội dung từ workbook đang đóng

Làm thế nào để copy nội dung từ 1 workbook đang đóng? Chắc hẳn khi làm việc trên VBA bạn cũng gặp rắc rối với vấn đề này. Thông thường chúng ta phải thực hiện việc này một cách rất thủ công:

  • Mở workbook chứa nội dung cần copy (Closed Workbook)
  • Thực hiện thao tác copy
  • Dán nội dung vào workbook cần lấy kết quả (Active Workbook)
  • Đóng workbook chứa nội dung cần copy lại

Nếu như chúng ta làm việc đó đồng thời với nhiều workbook thì sẽ rất mất công và mất thời gian. Sau đây Học Excel Online sẽ hướng dẫn bạn cách thực hiện công việc đó trên VBA để có thể tự động hóa toàn bộ những thao tác đó.

Những nội dung cần chú ý:

  • Xác định được đường dẫn tới thư mục chứa workbook cần copy nội dung
  • Xác định được vùng cần copy
  • Xác định được vị trí cần paste
  • Việc mở và đóng workbook sẽ khiến màn hình bị nhấp nháy => thực hiện lệnh ngăn việc cập nhật màn hình.

Câu lệnh VBA mẫu:

Dưới đây là câu lệnh VBA mẫu thực hiện việc copy dữ liệu từ 1 workbook đang đóng:

Phân tích một số nội dung của câu lệnh:

  • Trong câu lệnh trên, phần Đường dẫn và Tên workbook được chia ra thành từng phần, khi đó chúng ta có thể kiểm soát được từng đối tượng này được tốt hơn. Khi muốn sử dụng cả tên và địa chỉ (ví dụ như khi muốn mở workbook cần có đủ 2 thông tin này) thì chúng ta chỉ cần ghép 2 biến lại là được.
  • Việc copy dữ liệu có thể sẽ copy cả công thức. Do đó chúng ta cần thêm 1 bước loại bỏ công thức, chỉ lấy giá trị rồi sau đó thực hiện lệnh copy. Như vậy sẽ tránh được lỗi tham chiếu tới sheet khác khi thực hiện lệnh copy.
  • Tuy nhiên việc chuyển dữ liệu về dạng thuần giá trị sẽ làm thay đổi workbook chứa nội dung copy. Do đó khi đóng workbook đó chúng ta không nên kết hợp với việc Save => Chọn False khi thực hiện lệnh Close Workbook để đóng workbook mà không lưu.

Chúc các bạn học tốt cùng Học Excel Online!