- Скопіюйте аркуш у нову книгу
- Скопіюйте кілька аркушів у нову книгу
- Копіювати аркуш у тому самому робочому зошиті
- Перемістити аркуш
- Копія та аркуш імен
- Скопіюйте аркуш до іншої робочої книги
- Скопіюйте робочий аркуш у закриту книгу
- Скопіюйте аркуш з іншої робочої книги, не відкриваючи її
- Дублювати аркуш Excel кілька разів
У цьому посібнику буде розглянуто, як скопіювати аркуш або аркуш за допомогою VBA.
Скопіюйте аркуш у нову книгу
Щоб скопіювати аркуш до нової книги:
1 | Аркуші ("Аркуш1"). Копіювати |
Скопіюйте ActiveSheet до нової книги
Щоб скопіювати аркуш ActiveSheet до нової книги:
1 | ActiveSheet.Copy |
Скопіюйте кілька аркушів у нову книгу
Щоб скопіювати кілька аркушів у нову книгу:
1 | ActiveWindow.SelectedSheets.Copy |
Копіювати аркуш у тому самому робочому зошиті
Ми розпочали з показу найпростішого прикладу аркушів: копіювання аркушів у нову книгу. Ці приклади нижче покажуть вам, як скопіювати аркуш у тій самій книзі. Під час копіювання аркуша у робочій книзі потрібно вказати місце розташування. Щоб вказати розташування, ви попросите VBA перемістити аркуш ДО або ПІСЛЯ іншого аркуша.
Скопіювати аркуш перед іншим аркушем
Тут ми вказуємо копіювати та вставляти аркуш перед Sheet2
1 | Аркуші ("Аркуш1"). Скопіювати до: = Аркуші ("Аркуш2") |
Скопіювати аркуш перед першим аркушем
Замість того, щоб вказувати назву аркуша, можна також вказати позицію аркуша. Тут ми копіюємо та вставляємо аркуш перед першим аркушем у зошиті.
1 | Аркуші ("Аркуш1"). Скопіювати до: = Аркуші (1) |
Новостворений аркуш тепер стане першим аркушем у робочій книзі.
Копіювати аркуш після останнього аркуша
Використовуйте властивість After, щоб повідомити VBA вставити аркуш ПІСЛЯ іншого аркуша. Тут ми скопіюємо та вставимо аркуш після останнього аркуша у робочій книзі:
1 | Аркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість) |
Зверніть увагу, що ми використовували Sheets.Count для підрахунку кількості аркушів у робочій книзі.
Перемістити аркуш
Ви також можете перемістити аркуш у робочій книзі, використовуючи подібний синтаксис. Цей код перемістить аркуш 1 до кінця книги:
1 | Аркуші ("Аркуш1"). Перемістити після: = Аркуші (Таблиці.Кількість) |
Копія та аркуш імен
Після копіювання та вставлення аркуша новостворений аркуш стає ActiveSheet. Отже, щоб перейменувати наш новий аркуш, просто використовуйте ActiveSheet.Name:
123456 | Sub CopySheetRename1 ()Аркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)ActiveSheet.Name = "Остання таблиця"End Sub |
Якщо назва аркуша вже існує, вищезгаданий код видасть помилку. Замість цього ми можемо скористатися опцією «Увімкнення помилки далі», щоб сказати VBA ігнорувати іменування Аркуша та продовжити решту процедури:
12345678 | Sub CopySheetRename2 ()Аркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)Увімкнути Помилка Відновити ДаліActiveSheet.Name = "Остання таблиця"Помилка Перейти до 0End Sub |
Або скористайтесь нашою функцією RangeExists, щоб перевірити, чи вже існує ім’я аркуша, перш ніж намагатися скопіювати аркуш:
123456789101112131415161718 | Sub CopySheetRename3 ()Якщо RangeExists ("LastSheet") ТодіMsgBox "Таблиця вже існує."ІнакшеАркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)ActiveSheet.Name = "Остання таблиця"Закінчити ЯкщоEnd SubФункція RangeExists (WhatSheet As String, Optional ByVal WhatRange As String = "A1") Як булеве значенняТест затемнення як діапазонУвімкнути Помилка Відновити ДаліВстановити тест = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Помилка Перейти до 0Функція завершення |
Копія та аркуш імен на основі значення комірки
Ви також можете скопіювати та назвати аркуш на основі значення комірки. Цей код буде називати аркуш на основі значення комірки в A1
12345678 | Sub CopySheetRenameFromCell ()Аркуші ("Аркуш1"). Скопіювати після: = Аркуші (Таблиць. Кількість)Увімкнути Помилка Відновити ДаліActiveSheet.Name = Діапазон ("A1"). ЗначенняПомилка Перейти до 0End Sub |
Скопіюйте аркуш до іншої робочої книги
До цього часу ми працювали над копіюванням аркушів у робочій книзі. Тепер ми розглянемо приклади копіювання та вставлення аркушів до інших робочих книг. Цей код буде копіювати аркуш на початок іншої книги:
1 | Аркуші ("Аркуш1"). Копіювати до: = Робочі зошити ("Приклад.xlsm"). Аркуші (1) |
Це буде копіювати аркуш до кінця іншої книги.
1 | Аркуші ("Аркуш1"). Скопіювати після: = Робочі зошити ("Приклад.xlsm"). Аркуші (Робочі зошити ("Приклад.xlsm"). Аркушів. Кількість) |
Зверніть увагу, що ми замінили 1 з Робочі зошити (“Приклад.xlsm”). Аркушів щоб отримати останній аркуш.
Скопіюйте робочий аркуш у закриту книгу
Ви також можете скопіювати аркуш до закритої книги. Цей код відкриє закриту книгу, щоб ви могли скопіювати в неї аркуш.
123456789 | Sub CopySheetToClosedWB ()Application.ScreenUpdating = НеправдаВстановити closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Аркуші ("Аркуш1"). Копіювати до: = закритаКнига. Аркуші (1)closedBook.Close SaveChanges: = ПравдаApplication.ScreenUpdating = ІстинаEnd Sub |
Скопіюйте аркуш з іншої робочої книги, не відкриваючи її
І навпаки, цей код буде копіювати робочий аркуш із закритої книги без необхідності відкривати книгу вручну.
123456789 | Sub CopySheetFromClosedWB ()Application.ScreenUpdating = НеправдаВстановити closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Копіювати до: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = ІстинаEnd Sub |
Зверніть увагу, що в обох цих прикладах ми вимкнули ScreenUpdating, тому процес працює у фоновому режимі.
Дублювати аркуш Excel кілька разів
Ви також можете дублювати аркуш Excel кілька разів за допомогою циклу.
1234567891011121314 | Sub CopySheetMultipleTimes ()Dim n як ціле числоDim i як ціле числоУвімкнути Помилка Відновити Даліn = InputBox ("Скільки копій ви хочете зробити?")Якщо n> 0 ТодіДля i = 1 To nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Робочі листи.Кількість)ДаліЗакінчити ЯкщоEnd Sub |