VBA Copy Sheet / Copy Sheet sang Workbook khác

Hướng dẫn này sẽ trình bày cách sao chép Trang tính hoặc Trang tính bằng VBA.

Sao chép Trang tính sang Sổ làm việc Mới

Để sao chép Trang tính sang Sổ làm việc mới:

1 Trang tính ("Trang 1"). Sao chép

Sao chép ActiveSheet sang Workbook mới

Để sao chép ActiveSheet sang một Workbook mới:

1 ActiveSheet.Copy

Sao chép nhiều trang tính sang sổ làm việc mới

Để sao chép nhiều Trang tính vào một sổ làm việc mới:

1 ActiveWindow.SelectedSheets.Copy

Sao chép trang tính trong cùng một sổ làm việc

Chúng tôi đã bắt đầu bằng cách hiển thị cho bạn ví dụ sao chép Trang tính đơn giản nhất: sao chép (các) Trang tính sang một Sổ làm việc mới. Những ví dụ dưới đây sẽ chỉ cho bạn cách sao chép một Trang tính trong cùng một Sổ làm việc. Khi sao chép một Trang tính trong Worbook, bạn phải chỉ định một vị trí. Để chỉ định một vị trí, bạn sẽ yêu cầu VBA di chuyển Trang tính TRƯỚC hoặc SAU một Trang tính khác.

Sao chép trang tính trước trang tính khác

Ở đây chúng tôi sẽ chỉ định sao chép và dán Trang tính trước Trang tính2

1 Trang tính ("Trang tính1"). Sao chép Trước: = Trang tính ("Trang tính2")

Sao chép trang tính trước trang tính đầu tiên

Thay vì chỉ định tên Trang tính, bạn cũng có thể chỉ định vị trí Trang tính. Ở đây chúng tôi đang sao chép và dán một Trang tính trước Trang tính đầu tiên trong Sổ làm việc.

1 Trang tính ("Trang 1"). Sao chép Trước: = Trang tính (1)

Trang tính mới được tạo bây giờ sẽ là Trang tính đầu tiên trong Sổ làm việc.

Sao chép trang tính sau trang tính cuối cùng

Sử dụng thuộc tính Sau để yêu cầu VBA dán Trang tính SAU một trang tính khác. Ở đây chúng tôi sẽ sao chép và dán một Trang tính sau Trang tính cuối cùng trong Sổ làm việc:

1 Trang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)

Lưu ý rằng chúng tôi đã sử dụng Sheets.Count để đếm số Trang tính trong Workbook.

Di chuyển trang tính

Bạn cũng có thể di chuyển một Trang tính trong Sổ làm việc bằng cú pháp tương tự. Mã này sẽ di chuyển Sheet1 đến cuối Workbook:

1 Trang tính ("Trang tính1"). Di chuyển sau: = Trang tính (Trang tính.Count)

Sao chép và Bảng tên

Sau khi sao chép và dán một Trang tính, trang tính mới được tạo sẽ trở thành Trang tính Hoạt động. Vì vậy, để đổi tên trang tính mới của chúng tôi, chỉ cần sử dụng ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Trang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)ActiveSheet.Name = "LastSheet"Kết thúc Sub

Nếu tên Trang tính đã tồn tại, đoạn mã trên sẽ tạo ra lỗi. Thay vào đó, chúng ta có thể sử dụng “On Error Resume Next” để yêu cầu VBA bỏ qua việc đặt tên cho Trang tính và tiếp tục với phần còn lại của quy trình:

12345678 Sub CopySheetRename2 ()Trang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)Khi có lỗi Tiếp tục tiếp theoActiveSheet.Name = "LastSheet"Lỗi GoTo 0Kết thúc Sub

Hoặc sử dụng Hàm RangeExists của chúng tôi để kiểm tra xem tên Trang tính đã tồn tại chưa trước khi cố gắng sao chép trang tính:

123456789101112131415161718 Sub CopySheetRename3 ()If RangeExists ("LastSheet") Sau đóMsgBox "Trang tính đã tồn tại."KhácTrang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)ActiveSheet.Name = "LastSheet"Kết thúc nếuKết thúc SubHàm RangeExists (WhatSheet As String, ByVal tùy chọn WhatRange As String = "A1") As BooleanKiểm tra độ sáng theo phạm viKhi có lỗi Tiếp tục tiếp theoĐặt kiểm tra = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Lỗi GoTo 0Chức năng kết thúc

Sao chép và đặt tên trang tính dựa trên giá trị ô

Bạn cũng có thể muốn sao chép và đặt tên Trang tính dựa trên Giá trị ô. Mã này sẽ đặt tên cho Trang tính dựa trên giá trị Ô trong A1

12345678 Sub CopySheetRenameFromCell ()Trang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)Khi có lỗi Tiếp tục tiếp theoActiveSheet.Name = Range ("A1"). Giá trịLỗi GoTo 0Kết thúc Sub

Sao chép trang tính sang một sổ làm việc khác

Cho đến nay, chúng tôi đã làm việc với việc sao chép Trang tính trong Sổ làm việc. Bây giờ chúng ta sẽ đề cập đến các ví dụ để sao chép và dán Trang tính vào các Sổ làm việc khác. Mã này sẽ sao chép một Trang tính vào đầu một sổ làm việc khác:

1 Trang tính ("Trang tính1"). Sao chép Trước: = Sách làm việc ("Ví dụ.xlsm"). Trang tính (1)

Thao tác này sẽ sao chép Trang tính vào cuối Sổ làm việc khác.

1 Trang tính ("Trang tính1"). Sao chép Sau: = Sổ làm việc ("Ví dụ.xlsm"). Trang tính (Sổ làm việc ("Ví dụ.xlsm"). Trang tính.Count)

Thông báo chúng tôi đã thay thế 1 với Workbooks (“Ví dụ.xlsm”). Sheets.Count để lấy Bảng tính cuối cùng.

Sao chép Trang tính vào Sổ làm việc đã Đóng

Bạn cũng có thể muốn sao chép Trang tính vào Sổ làm việc đã đóng. Mã này sẽ mở một Sổ làm việc đã đóng để bạn có thể sao chép một Trang tính vào đó.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = SaiĐặt CloseBook = Workbooks.Open ("D: \ Dropbox \ excel \ posts \ example.xlsm")Trang tính ("Trang 1"). Sao chép Trước: = CloseBook.Sheets (1)closeBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueKết thúc Sub

Sao chép trang tính từ một sổ làm việc khác mà không cần mở nó

Ngược lại, mã này sẽ sao chép Trang tính TỪ một Sổ làm việc đã đóng mà bạn không cần phải mở sổ làm việc theo cách thủ công.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = SaiĐặt closeBook = Workbooks.Open ("D: \ Dropbox \ excel \ posts \ example.xlsm")closeBook.Sheets ("Sheet1"). Copy Before: = ThisWorkbook.Sheets (1)closeBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueKết thúc Sub

Lưu ý rằng trong cả hai ví dụ này, chúng tôi đã vô hiệu hóa ScreenUpdating để quá trình chạy ở chế độ nền.

Nhân bản trang tính Excel nhiều lần

Bạn cũng có thể sao chép một Trang tính Excel nhiều lần bằng cách sử dụng Vòng lặp.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n As IntegerDim i As IntegerKhi có lỗi Tiếp tục tiếp theon = InputBox ("Bạn muốn tạo bao nhiêu bản sao?")Nếu n> 0 ThìĐối với i = 1 Đến nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)Kế tiếpKết thúc nếuKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave