Khi sắp xếp dữ liệu trong sổ làm việc, không có gì lạ khi sao chép trang tính từ sổ làm việc này sang sổ làm việc khác. Thật vậy, lệnh Di chuyển hoặc Sao chép Trang tính (hiển thị khi bạn nhấp chuột phải vào tab trang tính) là lệnh mà tôi sử dụng khá thường xuyên và tôi sẵn sàng cá rằng những người khác cũng sử dụng nó thường xuyên.

Vậy thì làm cách nào để sao chép trang tính trong macro? Câu trả lời là sử dụng phương pháp Sao chép với một trang tính riêng lẻ hoặc một nhóm trang tính.

Ví dụ: đoạn mã macro sau sẽ sao chép trang tính hiện được chọn sang một sổ làm việc mới:

ActiveSheet.Copy

Đó là nó; một dòng duy nhất là tất cả những gì cần thiết để sao chép trang tính sang một sổ làm việc mới, chưa được đặt tên. Sau khi thực hiện dòng, sổ làm việc mới được chọn và bạn có thể lưu nó bằng cách sử dụng mã tương tự như sau. Dòng đầu tiên trong mã lưu sổ làm việc và dòng thứ hai đóng nó.

ActiveWorkbook.SaveAs Filename:="MyNewFile.xlsm", _   FileFormat:=xlOpenXMLWorkbookMacroEnabled ActiveWindow.Close

Nếu bạn muốn sao chép một trang tính cụ thể sang một sổ làm việc khác, bạn thực hiện bằng cách chỉ định tên của trang tính mà bạn muốn sao chép, thay vì sử dụng đối tượng ActiveSheet:

Sheets("Sheet1").Copy

Ví dụ này sao chép trang tính có tên Sheet1, từ bộ sưu tập Trang tính, sang một sổ làm việc mới. Sau đó, bạn có thể lưu sổ làm việc mới, như đã thảo luận.

Phương pháp Sao chép, khi được sử dụng với trang tính, không giới hạn việc sao chép một trang tính tại một thời điểm. Nếu bạn đã chọn một nhóm trang tính, bạn vẫn có thể sử dụng một dòng lệnh duy nhất để sao chép tất cả chúng vào một sổ làm việc mới.

Đó là những gì được thực hiện trong macro này:

Sub CopyWorkbook()

Dim sCopyName As String

sCopyName = "My New Workbook.xlsm"



SelectedSheets.Copy     ActiveWorkbook.SaveAs Filename:=sCopyName, _       FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Lưu ý việc sử dụng lệnh Copy. Macro sẽ hoạt động cho dù bạn đã chọn một trang tính hay năm mươi; nó không quan trọng. Nếu bạn muốn sao chép tất cả các trang tính từ sổ làm việc này sang sổ làm việc khác, tất cả những gì bạn cần làm là thực hiện một thay đổi duy nhất trong macro, đối với dòng mà phương thức Sao chép được gọi:

Sheets.Copy

Thao tác này sao chép toàn bộ bộ sưu tập Trang tính, bao gồm tất cả các trang tính trong sổ làm việc.

Cần lưu ý rằng phương pháp Sao chép không chỉ để sao chép trang tính sang một sổ làm việc mới; nó cũng có thể được sử dụng để sao chép các trang tính trong cùng một sổ làm việc. Điều duy nhất bạn cần làm là chỉ định nơi bạn muốn tạo bản sao trong sổ làm việc hiện tại:

ActiveSheet.Copy After:=Sheets("Sheet7")

Dòng mã này sao chép trang tính đang hoạt động vào cùng một sổ làm việc để nó xuất hiện sau trang tính có tên là Sheet7. Nếu phù hợp hơn với nhu cầu của bạn, thay vào đó bạn có thể chỉ định trang tính mà trước đó bản sao sẽ được đặt:

ActiveSheet.Copy Before:=Sheets("Sheet7")

Điều này dẫn đến trang tính được đặt trước Sheet7 thay vì sau nó.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (11856) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: