Копіювати аркуш VBA / Копіювати аркуш до іншої робочої книги

У цьому посібнику буде розглянуто, як скопіювати аркуш або аркуш за допомогою 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

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave