- Sao chép Trang tính sang Sổ làm việc Mới
- Sao chép nhiều trang tính sang sổ làm việc mới
- Sao chép trang tính trong cùng một sổ làm việc
- Di chuyển trang tính
- Sao chép và Bảng tên
- Sao chép trang tính sang một sổ làm việc khác
- Sao chép Trang tính vào Sổ làm việc đã Đóng
- Sao chép trang tính từ một sổ làm việc khác mà không cần mở nó
- Nhân bản trang tính Excel nhiều lần
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 |