Vba word добавить страницу
Создание новых рабочих листов осуществляется с помощью метода 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, который для создания диаграмм уже не подойдет.
Примеры создания листов
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 Before : = Worksheets ( Worksheets . Count )- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Set myList = Workbooks ( "Книга1.xlsm" ) . Worksheets . AddЕсли создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
Worksheets ( "Лист1" ) . Copy Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Copy _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
Worksheets ( "Лист1" ) . Move Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Move _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист4»" )Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . DeleteЕсли рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.48 комментариев для “VBA Excel. Рабочий лист (создание, копирование, удаление)”
А как удалить листы не указывая постоянно их название?:
Если по крупному
нет Проверки наличия Листа в книге
нет Переименования Листа
Добрый день, Эдуард!
Я правильно понял вопрос: нужно, чтобы макрос при каждом запуске создавал копию листа и присваивал ему новое имя, отличное от имени по умолчанию? Если так, то по каким правилам должно создаваться новое имя?
Здравствуйте. Не могу найти макрос может кто поможет.
Задача состоит в том что бы макрос читал все листы книги после чего делал копию этих листов и вставлял в эти же листы данные как значения. Т.е. фактически разрывал связи методом копи паст но на всех листах книги (колличество листов в книге может быть каждый раз разное.
Добрый день!
У меня вопрос.
Как перемещать лист перед другим листом, номер или название которого будет вводить пользователь?
Привет, Артур!
Перемещение листа «Лист2» на позицию перед листом, имя ярлыка которого вводится в текстовое поле информационного окна InputBox:
Спасибо!
У меня ещё вопрос. А если указывать номер листа, перед которым будет другой лист, какое изменение будет в коде?
А так можно вводить и номер, и имя:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" ) x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" )Добрый день! Возможно ли полное копирование листа на нужный мне лист? В январе заполняются данные каждый день и надо чтобы за каждый день создавалась копия на заранее созданные 31 лист по дням?
. PasteSpecial Paste : = xlPasteFormulasAndNumberFormatsДобрый день, Эдуард!
Это можно сделать двумя строками, но перед копированием следует проверить, не был ли исходный лист сегодня уже сохранен под новым именем:
Спасибо за помощь! Нашел другое решение более мне подходящее но не знаю как сделать чтобы созданые листы вставлялись по порядку нумерации 1,2,3 и т.д. после активного листа? Не поможете вот код
destSht . Move After : = Worksheets ( Worksheets . Count )Спасибо все работает!
Еще вопрос, можно ли скопировать лист не в конец книги а между листами, есть 12 месяцев в книге ексель чтобы копировалось после января, февраля?
И может еще чтобы кнопка с макросом не копировалась а создавалась гипперссылка обратно на лист?
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( Worksheets . Count )Я добавил код перемещения нового листа относительно исходного листа с именем текущего месяца и удаления ненужного нового листа, который создается при повторном вводе одного и того же числа:
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( CStr ( CByte ( destSht . Name ) - 1 ) )Евгений огромное спасибо это то что и требовалось весьма признателен за Вашу помощь.
Эдуард, представленный выше код будет работать только с одним месяцем. Excel не даст создать в одной книге несколько листов с одним именем (одно и то же число, но разных месяцев). Вам придется как-то изменить наименование листов, например: 1.01-31.01, 1.02-28.02. Тогда для перемещения новых листов придется использовать другой алгоритм или по окончании одного месяца, все его листы переименовать, например так:
MsgBox "Такой номер уже используется - введите другой"Я понял этого и не требуется по окончанию месяца листы будут сохранены отдельно.
А вот по предедущему коду нельзя ввести произвольное число т.е не по порядку 1,2,3 а сразу например 17 пропустив с 1 по 16?
Помогите с мелочью никак не пойму куда вставить умножить на 2,1 и на 1,9 чтобы не считалось +_ 20% в этой формуле?
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1))
Эдуард, может быть у вас для ячейки с формулой установлен формат «Процентный»?
Нет числовой. условное форматирование со стрелками вверх вниз и вправо
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,6)) для стрелки вверх
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,4)) для стрелки вправо
но не работает может я не туда вставляю *2,6
Синтаксис функции АДРЕС:
АДРЕС(номер_строки;номер_столбца;[тип_ссылки];[A1];[имя_листа])
Там, где вы умножаете, должно быть логическое значение [A1]: ИСТИНА или ЛОЖЬ (1 или 0).
удаляю Лист по имени на ярлычке
Евгений, помогите пожалуйста со следующей задачей.
В папке несколько документов эксель, в каждом из которых несколько листов.
Необходимо, чтобы макрос открывал по порядку каждый документ, проходил по каждому листу и брал оттуда нужную информацию. Затем эта информация переносится в новый документ эксель в заданном порядке.
В целом программу я реализовал, но столкнулся с проблемой, что debug упирается в последний лист первого открытого документа и не может дальше перейти к следующему документу. Т.е. необходимо прописать условие, чтобы vba понимал, что данный лист в документе последний.
Подскажите пожалуйста, как это сделать?
Цикл будет завершен после обработки последнего листа.
Здравствуйте!
Возможно ли при копировании листа из другого файла перенести и пользовательский стиль таблицы?
Добрый день!
Если не ошибаюсь, пользовательский стиль таблицы всегда копируется вместе с листом, но внешний вид таблиц будет одинаков, если оба файла созданы и открыты в одной версии Excel.
Спасибо за ответ.
Увы, не так, и даже всё не так.
Стиль «пытается» копироваться, цвета отличаются оттенками, но это полбеды. Главное, что нужно мне, чтобы копировался цвет шрифта таблицы, а этого не происходит. Почему-то на листе-цели устанавливается на весь лист чёрный шрифт, который Эксель считает главнее табличного.
И даже больше. После ручной замены на всё листе-цели шрифта с чёрного на авто замены цвета шрифта в импортированной таблице не происходит. Что всегда есть при ручной работе с таблицами.
Ну, и совсем глюк. Пользовательский стиль переезжает и доступен в новой книге. Но даже при ручном его выборе на листе-цели для таблицы не происходит смены цвета шрифта.
Цвет можно поменять только руками (макросом) без учёта таблицы.
Всё это происходит на одном компьютере в одной ОС В10.
Хм. Эксель 2016, всё выше описанное по-прежнему.
Если не затруднит, скопируйте умную таблицу макросом на новый лист, перед этим созданный тем же макросом.
В этой статье описывается создание нового документа в Word с помощью автоматизации из Visual Basic.
Пример кода
В примере кода в этой статье показано, как выполнить следующие действия:
- Вставка абзацев с текстом и форматированием.
- Просмотр и изменение различных диапазонов в документе.
- Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
- Добавление диаграммы.
Чтобы создать новый документ Word с помощью автоматизации из Visual Basic, выполните следующие действия:
В Visual Basic создайте новый стандартный проект EXE. По умолчанию создается форма Form1.
В меню проект выберите пунктссылки, выберите один из следующих параметров и нажмите кнопку ОК:
- Для Office Word 2007 щелкните объектная Библиотека Microsoft Word 12,0.
- В Word 2003 щелкните объектная Библиотека Microsoft word 11,0.
- В Word 2002 щелкните объектная Библиотека Microsoft word 10,0.
- В Word 2000 щелкните объектная Библиотека Microsoft word 9,0.
Добавление элемента управления CommandButton в форму Form1.
Добавьте следующий код в событие Click для Command1:
Нажмите клавишу F5, чтобы запустить программу, а затем выберите Command1.
После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблиц и диаграмм.
Использование шаблона
Если вы используете автоматизацию для создания документов, отформатированных в общем формате, можно воспользоваться новым документом, основанным на предварительно отформатированном шаблоне. Использование шаблона с клиентом автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:
- Вы можете больше управлять форматированием и размещением объектов в документах.
- Вы можете создавать документы с меньшим количеством кода.
С помощью шаблона можно выполнить точную настройку размещения таблиц, абзацев и других объектов в документе, а также включить форматирование для этих объектов. С помощью автоматизации можно создать новый документ на основе шаблона, используя следующий код:
В шаблоне можно определить закладки, чтобы клиент автоматизации мог заполнять переменный текст в определенном месте документа, как показано ниже:
Еще одно преимущество использования шаблона состоит в том, что вы можете создавать и сохранять стили форматирования, которые вы хотите применить во время выполнения, следующим образом:
Ссылки
Для получения дополнительных сведений щелкните номера статей, приведенные ниже, чтобы просмотреть статьи базы знаний Майкрософт:
285332 как автоматизировать Word 2002 с помощью Visual Basic для создания слияния почты
(c) корпорация Майкрософт (Microsoft Corporation) 2001, все права защищены. Вклады Лори B. Турнер, корпорация Майкрософт.
Возвращает объект Document, представляющие новый пустой документ, добавленный в коллекцию открытых документов.
Синтаксис
выражения. Добавить (Шаблон, NewTemplate, DocumentType, Видимый)
выражение (обязательно). Переменная, представляюная объект Documents.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Template | Необязательный | Variant | Имя шаблона, который будет использоваться для нового документа. Если этот аргумент опущен, используется шаблон Normal. |
NewTemplate | Необязательный | Variant | True, чтобы открыть документ в качестве шаблона. Значение по умолчанию — False. |
DocumentType | Необязательный | Variant | Может быть одним из следующих констант WdNewDocumentType: wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset или wdNewWebPage. Константа по умолчанию — wdNewBlankDocument. |
Visible | Необязательный | Variant | True, чтобы открыть документ в видимом окне. Если это значение false, Microsoft Word открывает документ, но задает видимое свойство окна документа false. Значение по умолчанию — True. |
Возвращаемое значение
Пример
В этом примере создается новый документ на основе шаблона Normal.
В этом примере создается новый документ на основе шаблона Professional memo.
В этом примере создается и открывается новый шаблон с использованием шаблона, присоединенного к активному документу в качестве модели.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: