Добавить лист в конец книги vba excel

Создание, копирование, перемещение и удаление рабочих листов Excel с помощью кода VBA. Методы Sheets.Add, Worksheet.Copy, Worksheet.Move и Worksheet.Delete.

Создание новых листов

Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.

Синтаксис метода Sheets.Add

expression.Add [Before, After, Count, Type]

где expression — переменная, представляющая собой объект Sheet.

Компоненты метода Sheets.Add

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
  • Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
  • Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.

*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.

**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.

Примеры создания листов

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

‘Создание рабочего листа:

Sheets.Add

Worksheets.Add

ThisWorkbook.Sheets.Add After:=ActiveSheet, Count:=2

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Лист1

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(1)

Workbooks(«Книга1.xlsm»).Sheets.Add After:=Worksheets(«Лист1»)

‘Создание нового листа с заданным именем:

Workbooks(«Книга1.xlsm»).Sheets.Add.Name = «Мой новый лист»

‘Создание диаграммы:

Sheets.Add Type:=xlChart

‘Добавление нового листа перед

‘последним листом рабочей книги

Sheets.Add Before:=Sheets(Sheets.Count)

‘Добавление нового листа в конец

Sheets.Add After:=Sheets(Sheets.Count)

  • Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
  • Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.

Создаваемый лист можно присвоить объектной переменной:

Dim myList As Object

‘В активной книге

Set myList = Worksheets.Add

‘В книге «Книга1.xlsm»

Set myList = Workbooks(«Книга1.xlsm»).Worksheets.Add

‘Работаем с переменной

myList.Name = «Listok1»

myList.Cells(1, 1) = myList.Name

‘Очищаем переменную

Set myList = Nothing

Если создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.

Копирование листов

Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.

Синтаксис метода Worksheet.Copy

expression.Copy [Before, After]

где expression — переменная, представляющая собой объект Worksheet.

Компоненты метода Worksheet.Copy

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.

*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.

Примеры копирования листов

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

‘В пределах активной книги

‘(уникальные имена листов)

Лист1.Copy After:=Лист2

‘В пределах активной книги

‘(имена листов на ярлычках)

Worksheets(«Лист1»).Copy Before:=Worksheets(«Лист2»)

‘Вставить копию в конец

Лист1.Copy After:=Sheets(Sheets.Count)

‘Из одной книги в другую

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Copy _

After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1»)

‘Один лист активной книги в новую книгу

Лист1.Copy

‘Несколько листов активной книги в новую книгу*

Sheets(Array(«Лист1», «Лист2», «Лист3»)).Copy

‘Все листы книги с кодом в новую книгу

ThisWorkbook.Worksheets.Copy

* Если при копировании в новую книгу нескольких листов хотя бы один лист содержит умную таблицу — копирование невозможно. Один лист, содержащий умную таблицу, копируется в новую книгу без проблем.

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Перемещение листов

Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.

Синтаксис метода Worksheet.Move

expression.Move [Before, After]

где expression — переменная, представляющая собой объект Worksheet.

Компоненты метода Worksheet.Move

  • Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
  • After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.

*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.

Примеры перемещения листов

Простые примеры перемещения листов:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

‘В пределах активной книги

‘(уникальные имена листов)

Лист1.Move After:=Лист2

‘В пределах активной книги

‘(имена листов на ярлычках)

Worksheets(«Лист1»).Move Before:=Worksheets(«Лист2»)

‘Размещение после последнего листа:

Лист1.Move After:=Sheets(Sheets.Count)

‘Из одной книги в другую

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Move _

After:=Workbooks(«Книга2.xlsm»).Worksheets(«Лист1»)

‘В новую книгу

Лист1.Move

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:

Sub Peremeshcheniye()

Dim x

x = InputBox(«Введите имя или номер листа», «Перемещение листа «Лист4»»)

If IsNumeric(x) Then x = CLng(x)

Sheets(«Лист4»).Move Before:=Sheets(x)

End Sub

Удаление листов

Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete

Синтаксис метода Worksheet.Delete

expression.Delete

где expression — переменная, представляющая собой объект Worksheet.

Примеры удаления листов

‘По уникальному имени

Лист1.Delete

‘По имени на ярлычке

Worksheets(«Лист1»).Delete

‘По индексу листа

Worksheets(1).Delete

‘В другой книге

Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Delete

Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.

Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.

8 ответов

Попробуйте следующее:

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

Или используйте предложение With, чтобы избежать неоднократного вызова вашего объекта

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

Выше может быть дополнительно упрощено, если вам не нужно вызывать на том же рабочем листе в остальной части кода.

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

L42
20 дек. 2013, в 07:01

Поделиться

Пожалуйста, используйте этот один вкладыш:

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"

Amar
03 янв. 2016, в 06:24

Поделиться

Попробуйте следующее:

Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
    On Error GoTo the_dark

    Dim wsSheet As Worksheet
    Dim bFoundWS As Boolean
    bFoundWS = False
    If inNamePrefix <> "" Then
        Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
    End If

    If inBeforeOrAfter = iAfter Then
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
        Else
            Worksheets.Add(After:=wsSheet).Name = inName
        End If
    Else
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(Before:=Worksheets(1)).Name = inName
        Else
            Worksheets.Add(Before:=wsSheet).Name = inName
        End If
    End If

    Set addSheet = findWS(inWB, inName, bFoundWS)         ' just to confirm it exists and gets it handle

    the_light:
    Exit Function
    the_dark:
    MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
    Err.Clear
    GoTo the_light
End Function

Mr F
07 окт. 2014, в 12:45

Поделиться

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(при добавлении листа, в любом случае это будет активный лист)

Saptarshi
14 сен. 2015, в 09:11

Поделиться

Попробуйте использовать:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

Если вы хотите проверить, существует ли листок с тем же именем, вы можете создать функцию:

Function funcCreateList(argCreateList)
    For Each Worksheet In ThisWorkbook.Worksheets
        If argCreateList = Worksheet.Name Then
            Exit Function ' if found - exit function
        End If
    Next Worksheet
    Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function

Когда функция будет создана, вы можете вызвать ее из основного Sub, например:

Sub main

    funcCreateList "MySheet"

Exit Sub

Ivan Tokarev
23 март 2016, в 10:24

Поделиться

Попробуйте переключить порядок кода. Сначала вы должны создать рабочий лист, чтобы назвать его.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

спасибо,

Developer
15 нояб. 2016, в 19:44

Поделиться

Это даст вам возможность:

  • Перезаписать или сохранить вкладку с тем же именем.
  • Поместите лист на конец всех вкладок или рядом с текущей вкладкой.
  • Выберите свой новый лист или активный.

Call CreateWorksheet("New", False, False, False)


Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
  activeSheetNumber = Sheets(ActiveSheet.Name).Index

  If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
    If (preserveOldSheet) Then
      MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
      Exit Sub
    End If
      Application.DisplayAlerts = False
      Worksheets(sheetName).Delete
    End If

    If (isLastSheet) Then
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
    Else 'Place sheet after the active sheet.
      Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
    End If

    If (selectActiveSheet) Then
      Sheets(activeSheetNumber).Activate
    End If

End Sub

moberme
17 окт. 2017, в 22:40

Поделиться

Это быстрое и простое добавление именованной вкладки к текущему листу:

Sheets.Add.Name = "Tempo"

Jan
22 окт. 2015, в 20:37

Поделиться

Ещё вопросы

  • 1Объединение списков объектов, содержащих списки объектов в c #
  • 1Как читать историю Chrome в Android
  • 1Каковы преимущества использования обратных вызовов над строками для инкапсуляции кода в javascript?
  • 0Модифицировать динамически добавленные элементы при загрузке с помощью jQuery
  • 1Android — Изменение ContentText уведомления по нажатию кнопки
  • 0установить библиотеку так, чтобы компилятор c ++ мог получить к ней прямой доступ
  • 1Как получить индекс столбца выбранного столбца списка, у которого нет элемента списка?
  • 0Контент не помещается в bpopup
  • 0Назначить один указатель интерфейса на другой указатель интерфейса в C ++
  • 1Java: синглтон из базового класса
  • 1Хороший подход к многоэтапной загрузке файлов в Android
  • 1ошибка при попытке сделать среднее для фрейма данных PANDA
  • 0Как исправить аккордеон в подменю jQuery, используя nextUntil (), а не ()?
  • 1Vue.js — функция рандомизации данных (лучшая практика)
  • 0Отправка данных $ http.post в PHP — Попытка получить свойство необъекта в
  • 0Отправить конкретную строку таблицы в функцию
  • 0MySql меньше количества с предложением Group By
  • 1С чем связано com.firebase.client.ServerValue.TIMESTAMP?
  • 0Как преобразовать элемент ввода ввода в элемент кнопки, используя JavaScript?
  • 0Как уменьшить время цикла
  • 0Блок прокрутки на космической печати — Chrome
  • 0Отображение .jpg и .txt значения файла в модальном всплывающем окне не работает
  • 1Получить IP-адрес принтера
  • 0Решение UI Router генерирует неожиданный запрос Get в Angular
  • 1Невозможно установить изображение и текст в центре по вертикали Android PagerTabStrip Android
  • 1Пользовательская фильтрация для пользовательского ArrayAdapter в ListView
  • 1Как перевести lucene36 в lucene 40
  • 1Проверка MAC представления состояния не удалась с server.transfer
  • 1невозможно создать экземпляр класса внутри метода?
  • 1Удаление первого слова в строке, начинающейся с цифры, с помощью регулярного выражения
  • 1Добавьте активный класс к элементу LI в уже существующем коде JavaScript с помощью onclick
  • 0Форматирование данных JSON в PHP
  • 1Скрыть линии муниципалитетов на карте, используя d3.js
  • 0Сохраните FLOT-диаграмму в файл изображения, используя canvas2image
  • 1Android XML DOM Разбор, когда у вас есть пространства имен?
  • 0Как сделать разрыв между строками в FlowPanel в Css в Gwt?
  • 0Странное поведение с signalR и IE10 и скрипачом
  • 1Android динамическое рисование текста / обнаружение касания
  • 1Обнаружение частоты на Android — AudioRecord
  • 0PHP ассоциативный массив, как читать данные
  • 0AssetsManager-поздний завтрак не работает
  • 0Бритвенная переменная в селекторе jQuery
  • 0вызов функции-члена bind_param () при ошибке, не связанной с объектом [duplicate]
  • 0Устройство Ориентация и Кордова
  • 0Как использовать SQL для сортировки столбца по первой группе цифр, которая появляется в каждой строке?
  • 0Не удается заставить соединитель Python3 — MySQLdb работать в 16.04
  • 1Список сортировки, в котором есть объект, содержащий два строковых элемента, которые содержат числа
  • 0Как вызвать функцию?
  • 1Как вернуть значение из функции, полученной от SP?
  • 1Как получить доступ к метаданным подкаста?

I am trying to add an Excel sheet named «Temp» at the end of all existing sheets, but this code is not working:

Private Sub CreateSheet()
    Dim ws As Worksheet
    ws.Name = "Tempo"
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub

Can you please let me know why?

ZygD's user avatar

ZygD

21k39 gold badges77 silver badges98 bronze badges

asked Dec 20, 2013 at 6:33

Behseini's user avatar

1

Try this:

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

Or use a With clause to avoid repeatedly calling out your object

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

Above can be further simplified if you don’t need to call out on the same worksheet in the rest of the code.

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

answered Dec 20, 2013 at 6:39

L42's user avatar

L42L42

19.3k11 gold badges43 silver badges68 bronze badges

5

Kindly use this one liner:

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"

answered Jan 3, 2016 at 5:27

Amar's user avatar

AmarAmar

4294 silver badges6 bronze badges

2

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(when you add a worksheet, anyway it’ll be the active sheet)

answered Sep 14, 2015 at 7:56

Saptarshi's user avatar

SaptarshiSaptarshi

1252 silver badges3 bronze badges

Try this:

Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
    On Error GoTo the_dark

    Dim wsSheet As Worksheet
    Dim bFoundWS As Boolean
    bFoundWS = False
    If inNamePrefix <> "" Then
        Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
    End If

    If inBeforeOrAfter = iAfter Then
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
        Else
            Worksheets.Add(After:=wsSheet).Name = inName
        End If
    Else
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(Before:=Worksheets(1)).Name = inName
        Else
            Worksheets.Add(Before:=wsSheet).Name = inName
        End If
    End If

    Set addSheet = findWS(inWB, inName, bFoundWS)         ' just to confirm it exists and gets it handle

    the_light:
    Exit Function
    the_dark:
    MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
    Err.Clear
    GoTo the_light
End Function

JF it's user avatar

JF it

2,4033 gold badges20 silver badges30 bronze badges

answered Oct 7, 2014 at 12:44

Mr F's user avatar

Mr FMr F

511 silver badge1 bronze badge

Try to use:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

If you want to check whether a sheet with the same name already exists, you can create a function:

Function funcCreateList(argCreateList)
    For Each Worksheet In ThisWorkbook.Worksheets
        If argCreateList = Worksheet.Name Then
            Exit Function ' if found - exit function
        End If
    Next Worksheet
    Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function

When the function is created, you can call it from your main Sub, e.g.:

Sub main

    funcCreateList "MySheet"

Exit Sub

answered Mar 23, 2016 at 10:14

Ivan Tokarev's user avatar

Try switching the order of your code. You must create the worksheet first in order to name it.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

thanks,

answered Nov 15, 2016 at 19:04

Developer's user avatar

DeveloperDeveloper

7417 silver badges12 bronze badges

This will give you the option to:

  1. Overwrite or Preserve a tab that has the same name.
  2. Place the sheet at End of all tabs or Next to the current tab.
  3. Select your New sheet or the Active one.

Call CreateWorksheet("New", False, False, False)


Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
  activeSheetNumber = Sheets(ActiveSheet.Name).Index

  If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
    If (preserveOldSheet) Then
      MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
      Exit Sub
    End If
      Application.DisplayAlerts = False
      Worksheets(sheetName).Delete
    End If

    If (isLastSheet) Then
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
    Else 'Place sheet after the active sheet.
      Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
    End If

    If (selectActiveSheet) Then
      Sheets(activeSheetNumber).Activate
    End If

End Sub

answered Oct 17, 2017 at 22:19

moberme's user avatar

mobermemoberme

6597 silver badges13 bronze badges

This is a quick and simple add of a named tab to the current worksheet:

Sheets.Add.Name = "Tempo"

rink.attendant.6's user avatar

answered Oct 22, 2015 at 19:04

Jan's user avatar

JanJan

4113 silver badges9 bronze badges

Содержание

  • Добавить лист
  • Добавить лист с именем
  • Добавить лист до / после другого листа
  • Добавить лист в переменную
  • Дополнительные примеры добавления листов

В этом руководстве будет рассказано, как добавлять / вставлять листы с помощью VBA.

Добавить лист

Этот простой макрос добавит лист перед ActiveSheet:

123 Дополнительное добавление ()Таблицы.ДобавитьКонец подписки

После вставки листа новый лист становится ActiveSheet. Затем вы можете использовать объект ActiveSheet для работы с новым листом (внизу этой статьи мы покажем, как вставить новый лист непосредственно в переменную).

1 ActiveSheet.Name = «NewSheet»

Добавить лист с именем

Вы также можете определить имя листа при создании нового листа:

1 Sheets.Add.Name = «NewSheet»

Создать новый лист с именем из ячейки

Или используйте значение ячейки, чтобы назвать новый лист:

1 Sheets.Add.Name = диапазон («a3»). Значение

Добавить лист до / после другого листа

Вы также можете выбрать место, где будет вставлен новый лист. Вы можете использовать свойства «После» или «До», чтобы вставить лист в определенное место в книге.

Вставить лист после другого листа

Этот код вставит новый лист ПОСЛЕ другого листа:

1 Sheets.Add After: = Sheets («Ввод»)

Это вставит новый лист ПОСЛЕ другого листа и укажет имя листа:

1 Sheets.Add (After: = Sheets («Input»)). Name = «NewSheet»

Обратите внимание на дополнительные круглые скобки, необходимые во втором примере (первый пример выдаст ошибку, если добавить вторую круглую скобку).

или до:

1 Sheets.Add (Before: = Sheets («Input»)). Name = «NewSheet»

В этих примерах мы явно назвали Лист, используемый для определения местоположения листа. Часто вместо этого вам нужно использовать индекс листа, чтобы можно было вставить лист в начало или конец книги:

Добавить лист в конец книги

Чтобы добавить лист в конец книги:

1 Sheets.Add After: = Sheets (Sheets.Count)

Добавить лист в начало книги:

Чтобы добавить лист в начало книги:

1 Sheets.Add (Before: = Sheets (1)). Name = «FirstSheet»

Добавить лист в переменную

Этот код назначает новый лист переменной при создании листа:

12 Dim ws как рабочий листУстановить ws = Sheets.Add

Отсюда вы можете ссылаться на новый лист с помощью переменной «ws»:

Дополнительные примеры добавления листов

Создать лист, если его еще нет

Вы можете создать лист, только если он еще не существует.

Создать рабочие листы из списка имен

Следующая процедура будет смотреть на содержимое одного столбца, настраивая рабочие листы Excel в текущей книге с этими именами. Он вызывает другую функцию, чтобы узнать, существует ли уже лист с таким именем, и если да, то лист не создается.

1234567891011121314151617181920212223242526 Частная подпрограмма CommandButton1_Click ()Вызов CreateWorksheets (Sheets («Sheet2»). Range («A1: a10»))Конец подпискиSub CreateWorksheets (Names_Of_Sheets As Range)Dim No_Of_Sheets_to_be_Added As IntegerТусклое имя листа как строкаDim i как целое числоNo_Of_Sheets_to_be_Added = Names_Of_Sheets.Rows.CountДля i = 1 в No_Of_Sheets_to_be_AddedSheet_Name = Names_Of_Sheets.Cells (i, 1) .Value’Добавляйте лист только в том случае, если его еще нет и имя длиннее нуля символовЕсли (Sheet_Exists (Sheet_Name) = False) And (Sheet_Name «»), тоWorksheets.Add (). Name = Sheet_NameКонец, еслиДалее яКонец подписки
1234567891011121314 Функция Sheet_Exists (WorkSheet_Name As String) как логическое значениеТусклый рабочий лист как рабочий листSheet_Exists = ЛожьДля каждой рабочей_таблицы в ThisWorkbook.WorksheetsЕсли Work_sheet.Name = WorkSheet_Name, тоSheet_Exists = ИстинаКонец, еслиСледующийКонечная функция

Итак, если у нас есть следующий текст в ячейках A1: A30 на листе 2:

Тогда будут созданы следующие листы:

Обратите внимание, что хотя «Собака» появляется дважды, создается только один лист.

Чтобы загрузить файл .XLS для этого руководства, щелкните здесь.

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

Иногда вам нужно создать новый лист и автоматически присвоить ему определенное имя в Excel. В этой статье мы покажем вам два метода добавления нового листа с определенным именем в текущую книгу, а также создание листа с определенным именем в новой книге в Excel.

Автоматическое добавление нового листа с определенным именем в текущую книгу с кодом VBA
Автоматическое добавление нового листа с определенным именем в новую книгу с помощью Kutools for Excel


Автоматическое добавление нового листа с определенным именем в текущую книгу с кодом VBA

Вы можете добавить новый лист с определенным именем в конец текущей книги со следующим кодом VBA.

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули.

3. Скопируйте и вставьте ниже код VBA в Модули окно.

Код VBA: добавить новый лист с определенным именем в конец текущей книги

Sub CreateSheet()
'Updated by ExtendOffice 20181009
    Dim xName As String
    Dim xSht As Object
    On Error Resume Next
    xName = InputBox("Please enter a name for this new sheet ", "Kutools for Excel")
    If xName = "" Then Exit Sub
        Set xSht = Sheets(xName)
        If Not xSht Is Nothing Then
            MsgBox "Sheet cannot be created as there is already a worksheet with the same name in this workbook"
            Exit Sub
            End If
            Sheets.Add(, Sheets(Sheets.count)).Name = xName
        End Sub

4. Нажмите F5 ключ для запуска кода. В всплывающем Kutools for Excel диалоговом окне введите имя для этого листа, а затем щелкните OK кнопка. Смотрите скриншот:

Затем создается новый рабочий лист с определенным именем, который располагается в конце текущей книги.


Автоматическое добавление нового листа с определенным именем в новую книгу с помощью Kutools for Excel

В этом разделе мы представим Создать рабочие листы последовательностей полезности Kutools for Excel. С помощью этой утилиты вы можете легко добавить новый лист с определенным именем в новую книгу.

1. Для добавления нового листа с определенным именем вам необходимо заранее ввести это имя в ячейку. А затем нажмите Кутулс Плюс > Рабочий лист > Создать рабочие листы последовательностей.

2. в Создать рабочие листы последовательностей диалоговое окно, выберите Пустой рабочий лист в Базовый рабочий лист выпадающий список, выберите Данныев диапазоне вариант и укажите ячейку, содержащую определенное имя рабочего листа, и, наконец, щелкните OK кнопка. Смотрите скриншот:

Затем в новой книге немедленно создается новый лист с этим конкретным именем из ячейки.

Заметки:

1. Если вы хотите создать несколько новых листов с определенными именами одновременно, введите эти имена в ячейки одну за другой, а затем выберите эти ячейки в Данные в диапазоне пунктом.

2. Вы также можете создавать рабочие листы последовательностей из номеров серий или настраиваемого списка с помощью этого Создать рабочие листы последовательностей утилита. Смотрите скриншот:

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

как в экселе добавить лист в конец книги?

Я
   vS

13.10.10 — 12:55

в VBA это      Sheets.Add After:=ActiveSheet

а в 1С такая запись не прокатывает… только со скобками, типа РабочаяКнига.Sheets.Add()

но так добавляется лист в начало, а мне нужно в конец….

   ДенисЧ

1 — 13.10.10 — 12:57

РабочаяКнига.Sheets.Add(,ActiveShhet)

   vS

2 — 13.10.10 — 13:02

ахха… только нету в 1С ActiveSheet

   vS

3 — 13.10.10 — 13:02

можно высказывать практические а не теоретические выкладки? :)

   Fatum1980

4 — 13.10.10 — 13:10

РабочаяКнига.Sheets.Add(,РабочаяКнига.ActiveShhet)
может быть так есть? :)
а вообще попробовать поискать инфу сложно:
http://citforum.ru/programming/windows/excel_faq/
http://www.firststeps.ru/vba/excel/vbaexcel1.html

когда заморачивался с загрузкой выгрузкой эксель мне этих ссылок хватило.

   vS

5 — 13.10.10 — 13:15

(4) в VBA все работает :) нужно из 1С выполнять… пока не соображу…

   vS

6 — 13.10.10 — 13:19

может у кого-то все же живой коТ есть? :)

   smaharbA

7 — 13.10.10 — 13:22

есть три варианта, Вам какой ?

   vS

8 — 13.10.10 — 13:27

(7) рабочий

   vS

9 — 13.10.10 — 13:29

нагуглил кучу копипастеных Add ПЕРЕД текущим листом… и немного вопросов как вставить ПОСЛЕ, но без ответов :)

   vS

10 — 13.10.10 — 13:43

(7) ты где? или рабочих вариантов нет?

   vS

11 — 13.10.10 — 13:57

ку ку :)
где коллективный разум? :)

   Denp

12 — 13.10.10 — 14:00

старый баян.

без изврата с выполнением скриптов вба — никак

надо добавлять перед последним листом и перемещать его в конец.

   vS

13 — 13.10.10 — 14:41

перемещать там тоже только     ActiveSheet.Move After:=Sheets(6)
примерно такая схема, в 1Ц не прокатит

   Denp

14 — 13.10.10 — 14:46

(13) ща пороюсь в старом коде

   План счетов

15 — 13.10.10 — 14:47

Дак сделай макрос в экселе который будет создавать новую страницу и помещать её в конец. И запускай этот макрос из 1С.

   План счетов

16 — 13.10.10 — 14:50

Можно на лету (из 1С) добавлять макросы в эксель.

   Denp

17 — 13.10.10 — 14:54

(13) Е=СоздатьОбъект(«Excel.Application»);

Е.Workbooks.Open(«…»,0,0,5,Строка(«…»));

Е.Sheets(Е.Sheets.Count).Select();

Е.Sheets.Add();

Е.Sheets(Е.Sheets.Count).Move(Е.Sheets(Е.Sheets.Count-1));

   Denp

18 — 13.10.10 — 14:55

+(17) то бишь перемещаем последний лист на предпоследнее место

   Fatum1980

19 — 13.10.10 — 14:55

(13) давно бы уже разобрался и сделал. держи добавление в конец:
   обЭксел  = Новый ComОбъект(«excel.application»);
   НашФайл = обЭксел.Workbooks.Open(СокрЛП(Путь)); //Открываем файл
   НашФайл.Sheets(3).Select();  //выбираем третий лист (у меня он был последним) как выбрать самый последний лист через каунт найдешь.
   НовыйЛист = НашФайл.Sheets.Add(,НашФайл.ActiveSheet);
   НашФайл.Save();
   ОбЭксел.WorkBooks.close(); // закрываем файл- экселя
все, добавлен лист в конец. никаких проблем.
код восьмерочный, но думаю в седьмой перевести не проблема.

   Denp

20 — 13.10.10 — 14:56

(19) проблема. Насколько я помню, проблема в том, что в 77 не работают пустые параметры

   Fatum1980

21 — 13.10.10 — 14:59

(20) ок.
строку
НовыйЛист = НашФайл.Sheets.Add(,НашФайл.ActiveSheet);
заменить на:
НовыйЛист = НашФайл.Sheets.Add();
один фиг в конц добавит.

   Denp

22 — 13.10.10 — 15:00

(21) потесть теперь. эксель 2003 добавляет предпоследним

   vS

23 — 13.10.10 — 15:07

(21) читай 0 :)

   vS

24 — 13.10.10 — 15:09

(17) спс, сейчас проверю

   Fatum1980

25 — 13.10.10 — 15:10

(23) а что там? тебе в начало чтоли нужно?

   vS

26 — 13.10.10 — 15:11

(25) прочитай

   Fatum1980

27 — 13.10.10 — 15:13

(26)
«но так добавляется лист в начало, а мне нужно в конец….»
что я не так прочитал?

   vS

28 — 13.10.10 — 15:14

(27) мне нужно, в конец… а предпоследний, это ПОЧТИ в конец, мне не нужно ПОЧТИ :) нужно апсолютно ;)

   Fatum1980

29 — 13.10.10 — 15:17

(28) я что-то написал про почти не конец?
если ты внимательно читаешь ветку, то код что написал я добавляет его в конец, но в восьмерке, мувнуть лист не проблема, хотя если два часа ждать готового решения, то наверное это сложно. сейчас потестю под семеркой отпишу.

   Denp

30 — 13.10.10 — 15:23

(29) у Add первый параметр — это лист, ПЕРЕД которым добавится лист, по умолчанию перед текущим. В семерку ты не можешь опустить этот параметр, точнее можешь, но вместе со всеми остальными. Поэтому либо ты указываешь лист, перед которым вставить, либо вставляешь перед текущим. Поэтому (21) не отработает как надо

   Fatum1980

31 — 13.10.10 — 15:32

(30) согласен, в семерке только двигать лист.

   smaharbA

32 — 13.10.10 — 15:56

Ексель=СоздатьОбъект(«Excel.Application»);
Ексель.Visible=-1;
Книги=Ексель.WorkBooks;
Книга=Книги.Add();
Листы=Книга.WorkSheets;
Лист=Листы.Add(Листы.Item(Листы.Count));
Листы.Item(Листы.Count).Move(Лист);
Скрипт=СоздатьОбъект(«MSScriptControl.ScriptControl»);
Скрипт.language=»vbscript»;
Скрипт.AddObject(«Листы»,Листы);
Лист=Скрипт.Eval(«[Листы].Add(,[Листы].Item([Листы].Count))»);

есть еще пара вариантов

   Denp

33 — 13.10.10 — 16:03

(32) без скриптов есть? просто из интереса спрашиваю

   smaharbA

34 — 13.10.10 — 16:04

(33) есть, используется Excel4Macro

   smaharbA

35 — 13.10.10 — 16:05

только сейчас на вскидку не скажу как, надо справку зырить, вней говорится, что только перед активным на сколько помню, но как то изворачивался

   vS

36 — 13.10.10 — 16:06

(29) я два часа немного другим занимался :) и сейчас занимаюсь, этот вопрос пока отложил… как освобожусь, попробую предпоследний в конец перекидывать

   Denp

37 — 13.10.10 — 16:07

(34) а это что такое?

   smaharbA

38 — 13.10.10 — 16:08

(37) это методы для объекта апликейшн (екселя) выполнения устаревших макрокоманд

   vS

39 — 13.10.10 — 16:53

(17) чото они не перемещаются…. команда выполняется, но ни чего не происходит :(

   Denp

40 — 13.10.10 — 16:54

(39) а (32)?

   vS

41 — 13.10.10 — 17:01

(40) чото (32) пока религия не позволяет… (17) работает… тупанул немного :) куча файлов открытая… не то не туда снесло :)

   smaharbA

42 — 13.10.10 — 17:36

(41) какая на религия, в (32) два способа добавления, один как в (17) но более правильный

(42) с первым согласен… а вот скрипты это уже религия :)

Понравилась статья? Поделить с друзьями:
  • Добавить лист в excel число
  • Добавить пробел в столбец excel
  • Добавить лист в excel python
  • Добавить пробел в начале ячейки в excel
  • Добавить лист в excel 2013