Remkomplekty.ru

IT Новости из мира ПК
11 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel добавить лист в конец

Vba excel добавить лист в конец

Бывалый

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2

Работаю с Excel и столкнулся с неожиданной проблемой.

Ребята, помогите перевести добавление нового листа за последним листом.
на VBA это выглядит следующим образом:

вторая часть проблем не вызвала:

А вот первая что я только не пробовал.

Эксперт

Профиль
Группа: Комодератор
Сообщений: 7021
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 48
Всего: 223

В С++ ActiveX нет позиционных аргументов (а After:= — это именно он и есть). Так что передавайте в ActiveWorkbook.Sheets.Add все аргументы (вплоть до аргумента After) со значениями по умолчанию (их можно посмотреть в хелпе по VBA в Excel’е)

Опытный

Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15

В качестве After`а можно передать нужную страницу:

Как вставить в книгу Excel новые листы? Как сделать копии листа в Excel? Как добавить новые листы с заданными именами?

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

Как вставить новый чистый лист в книгу Excel?

Для вставки нового листа достаточно выбрать пункт меню «Вставить. «, либо нажать кнопку, следующую сразу за последним листом рабочей книги. Еще одним способом добавления нового листа в рабочую книгу является нажатие сочетания клавиш Shift+F11 на клавиатуре. Можно также настроить создание книг с произвольным количеством листов, если Вас не устраивают стандартные три листа. Сделать это можно следующим образом, нажать кнопку Office, затем в меню выбрать «Параметры Excel» и в разделе «Основные» выбрать группу «При создании книг». В графе «Число листов» задайте нужное значение.

Как скопировать лист Excel или создать его точную копию?

Для того чтобы сделать копию листа в Excel 2007, необходимо выбрать лист, который Вы хотите скопировать и кликнуть на нем правой кнопкой мыши, выбрать пункт «Переместить/скопировать. «.

Далее в появившемся окне ставим галку в поле «создать копию» и при необходимости выбираем строку «(переместить в конец)», при этом созданная копия выбранного листа станет последним листом рабочей книги.

Как изменить имя или переименовать лист рабочей книги Excel?

Для того чтобы переименовать лист, необходимо кликнуть правой кнопкой мыши на ярлычке нужного листа и выбрать из контекстного меню пункт «Переименовать», кроме того, можно просто дважды кликнуть левой кнопкой мыши на нужном ярлычке листа и его имя станет доступным для изменения (кроме тех случаев, когда установлена защита структуры и окон).

Описанные выше действия относятся к стандартным средствам Excel и их вполне достаточно при работе с книгами, имеющими небольшое количество листов. Для массового добавления рабочих листов, вставки большого количества копий, а также для создания листов с заданными именами целесообразно использовать средства VBA.

Как многократно вставить пустые листы в книгу?

Как создать множество копий листа? Как добавить в книгу листы с именами из ячеек

При работе с файлами, содержащими множество листов, либо при необходимости периодически тиражировать, делать множество копий заданного листа, например, при создании квитанций в Excel, альтернативой стандартному, ручному добавлению или копированию листов может служить макрос (надстройка). Упомянутый макрос позволяет автоматически вставлять нужное количество новых листов, создавать заданное количество копий выбранного листа, а также дает возможность создавать новые листы и присваивать им имена на основе значений ячеек.

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

Можно выбрать одну из доступных опций:

1. Вставить новые листы в заданном количестве

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

2. Скопировать активный лист заданное число раз

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

3. Присвоить новым листам именами из ячеек

Вместо того чтобы создавать новые листы со стандартными именами «Лист1», «Лист2», «Лист3» и так далее, а затем переименовывать их, тратя на эту операцию много времени, можно предварительно сформировать список имен в ячейках листа рабочей книги, а затем в диалоговом окне надстройки выделить диапазон с нужными именами и запустить программу. Перед созданием листов с именами из значений ячеек производится проверка этих значений на соответствие требованиям к именам листов, которые:

а) не должны превышать 31 знака;

б) не должны содержать знаков: : / ? * [ или ];

Читать еще:  Не активны функции в excel

в) не должны оставаться пустыми.

После прохождения проверки добавляемым листам присваиваются имена в соответствии со значениями ячеек выделенного диапазона.

Создание квитанций в Excel

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

VBA копирование листа в конец рабочей книги (со скрытыми листами)

Я хочу скопировать лист и добавить его в конец всех текущих листов (независимо от того, скрыты ли листы).

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

Я пробовал варианты следующего, чтобы получить ссылку на недавно скопированный WorkSheet , но ни один из них не был успешным и / или допустимым кодом.

7 Ответов

Сделайте исходный лист видимым перед копированием. Затем скопируйте лист так, чтобы копия также оставалась видимой. После этого копия станет активным листом. Если вы хотите, снова скройте исходный лист.

Если вы используете следующий код, основанный на коде @Siddharth Rout, вы переименовываете только что скопированный лист, независимо от того, активирован он или нет.

Я столкнулся с подобной проблемой при копировании листа в другую книгу. Я предпочитаю избегать использования ‘activesheet’, хотя это и вызвало у меня проблемы в прошлом. Поэтому я написал функцию, чтобы выполнить это в соответствии с моими потребностями. Я добавляю его здесь для тех, кто приходит через google, как и я:

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

Для использования этой функции для исходного вопроса (т. е. в той же рабочей книге) можно было бы сделать что-то вроде.

Добавьте этот код в начало:

Добавьте этот код до конца:

Отрегулируйте код в конце, если вы хотите, чтобы активными и видимыми были не только первые листы. Например, следующие:

Чтобы убедиться, что новый лист является переименованным, измените свой код следующим образом:

Этот код находится в моей пользовательской форме, которая позволяет мне скопировать определенный лист (выбранный из выпадающего списка) с форматированием и формулами, которые я хочу создать, на новый лист, а затем переименовать новый лист с помощью пользовательского ввода. Обратите внимание, что каждый раз, когда лист копируется, ему автоматически присваивается старое имя листа с обозначением » (2)». Пример «OldSheet» становится «OldSheet (2)» после копирования и перед переименованием. Поэтому перед переименованием необходимо выбрать скопированный лист с именами программ.

Когда вы хотите скопировать лист с именем «mySheet» и использовать .Copy после:=, Excel сначала называет скопированный лист точно так же и просто добавляет ‘ (2)’, чтобы его конечное имя было «mySheet (2)».

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

Пример:

Ответ: я нашел это и хочу поделиться этим с вами.

Но вопрос в том, можем ли мы использовать его со следующим кодом для переименования листов, если да, то как мы можем это сделать?

Похожие вопросы:

Мы используем OpenOfficeXML и до сих пор работает хорошо. Теперь у нас есть сценарий, в котором нам нужно скопировать несколько листов из разных книг и поместить их в одну книгу (как несколько.

У меня есть 3 книги, а именно: A, B и C. Я кодирую макрос VBA внутри A, чтобы скопировать содержимое диапазона ячеек определенного листа от B до C. Dim wb_TC_PBS As Excel.Workbook Dim wb_SPO_PBS As.

Я делаю некоторые функции copy-paste в VBA. Я должен скопировать всю строку, если значение в cell A1 совпадает со значением в другой книге. Допустим (имя листа: Sheet1): На этом листе все значения в.

Я отвечаю за очень большую таблицу Excel 2010 со ссылками на все виды внешних источников данных, включая Bloomberg, 65 листов с модулями vba и ссылками на другие надстройки vba. Я заметил, что.

Я нахожусь в процессе рефакторинга огромной рабочей книги с большим количеством устаревших частей, избыточных вычислений, перекрестных зависимостей и т. д. В основном, я пытаюсь удалить ненужные.

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

у меня есть рабочая тетрадь 1 со 100 листами. у меня есть рабочая тетрадь 2 С 200 листами. мне нужно выполнить 2 задания: Для этих существующих листов (одно и то же имя листа в обеих книгах) я хочу.

Читать еще:  Subscript out of range vba excel

У меня есть один лист с кодом VBA со многими переменными и константами, и я хотел бы использовать эти переменные даже в коде VBA другого листа. К сожалению, код разделен между листами и требует.

Я хочу скопировать рабочий лист и поместить его DIRECTLY после другого листа. Но у меня возникают проблемы, когда речь идет о скрытых листах. Используя Excel 2013, я открываю новую книгу. Добавьте.

Макрос на VBA Excel – Формируем документы по шаблону

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

Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.

Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье — Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.

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

Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля

И так приступим!

Пишем макрос на VBA Excel по формированию документов

Реализовывать нашу задачу будем на примере «Электронной карточке сотрудника» (я это просто придумал:), хотя может такие и на самом деле есть), т.е. документ в котором хранится личные данные сотрудника вашего предприятия, в определенном виде, именно в Excel.

Примечание! Программировать будем в Excel 2010.

И для начала приведем исходные данные, т.е. сами данные и шаблон

Данные.

Лист, на котором расположены эти данные так и назовем «Данные»

Шаблон.

Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»

Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки.

Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»

Свои поля я назвал следующим образом:

  • ФИО – fio;
  • № — number;
  • Должность – dolgn;
  • Адрес проживания – addres;
  • Тел. № сотрудника – phone;
  • Комментарий – comment.

Код макроса на VBA Excel

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

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

затем, в правой области поставьте галочку напротив пункта «Разработчик»

После вкладка разработчик станет отображаться на ленте.

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

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

и после выполнения у Вас в той же папке появится вот такие файлы

Вот с таким содержимым:

Для удобства можете на листе с данными создать кнопку и задать ей событие выполнить наш только что созданный макрос, и после чего простым нажатием выполнять этот макрос. Вот и все! Удачи!

Vba excel добавить лист в конец

Excel ЧаВо

Worksbooks и Worksheets

Добавить новую пустую книгу:

В первом параметре метода Add можно указать стандартный тип шаблона Excel. Если же в нем указать имя (с полным путем) подготовленного файла (шаблоном может быть и «обычный» файл XLS, а не только файл XLT), то можно открыть книгу на диске как шаблон.

Читать еще:  Excel vba insert

Откроет файл «MyTemplate1.xls», т.е. точно как обычный шаблон «Книга1.xls», но свой со своим форматированием, что позволит ускорить процесс экспорта данных в Excel, т.к. не придется форматировать ячейки и вызывать другие настройки листа.

Как задать количество листов в новой книге?

Задать количество листов в новой книге можно перед добавлением новой книги:

Как открыть книгу, имеющуюся на диске?

Если книга находится не в папке, указанной в Excel.Application.DefaultFilePath, то нужно указывать полный путь к открываемому файлу .xls, даже если файл находится в текущей папке вашего приложения, т.к. Excel ничего про него не знает.

Как закрыть книгу без вопросов о сохранении? Как закрыть все книги?

Как узнать имена всех открытых книг?

Узнать имена всех книг экземпляра Excel.Application можно в цикле, например, так:

Как найти определенную открытую книгу?

Точно так же, как в предыдущем ответе — по имени в свойстве Name. Если вы хотите сделать найденную книгу активной, то вызовите метод Activate

Переименовать книгу никак нельзя — только сохранить под другим именем методом SaveAs (смотрите «Как сохранить книгу»).

Как открыть текстовый файл в Excel’е?

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

Как узнать имена всех листов в книге и их количество?

Узнать количество листов в книге можно в цикле по коллекции Workbook.Sheets. Количество листов — свойство Sheets.Count. Имя листа — свойство Worksheet.Name.

Как получить ссылку на активный лист в активной книге?

Обращаеясь к Excel.Application.ActiveSheet или WorkBook.ActiveSheet, вы получите ссылку на интерфейс IDispatch. Это происходит из-за того, что коллекция Excel.Application.Sheets может содержать объекты WorkSheet, Chart, Excel4MacroSheet (для поддержки Excel 4).

Определить тип листа можно, проверив свойство Worksheet.Type:

Как добавить новый лист в книгу? Как удалить лист?

При добавлении можно указать тип нового листа (WorkSheet, Chart, Excel4MacroSheet) и текущее положение. Добавленный лист будет активизирован автоматически (на него будет указывать свойство ActiveSheet)

Нужно ли делать лист активным, чтобы записать в него данные?

Не нужно — переключение (активация) листов только замедлит экспорт данных. Получите ссылку на любой лист в книге (активной или нет) и работайте c ней, как с активной. Активизировать лист нужно только в случае необходимости, например, при вставке из буфера обмена, предварительном просмотре и др.

Как выделить один или несколько листов в книге?

Как скопировать/переместить лист в одной книге? В другую книгу?

Как задать/убрать область печати? Как вызвать PrintPreview? Как напечатать лист?

Как установить параметры печати: отступы на листе, ориентацию листа и др.?

Установка параметров печати — довольно продолжительный процесс, поэтому советую настроить их в предварительно подготовленном шаблоне. Все параметры печати задаются в свойстве PageSetup объекта Worksheet. Но учтите, что текст в свойствах Footer или Header для Left, Right, Center суммарно не должен превышать 255 символов.

Для задания отступов в сантиметрах используйте функцию Excel.Application.CentimetersToPoints

Если вы выполните данный код, то заметите, как долго Excel настраивает все границы печати.

Как установить свои разрывы страниц (HPageBreaks) в области печати? Как узнать номер строки HpagePreak?

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

Также вы можете «переместить» разрыв, присвоив новое значение свойству Location объекта HPageBreak

Как сделать так, чтобы на каждой странице повторялись заголовки колонок таблицы?

Нужно задать «сквозные» строки заголовка таблицы.

Как установить пароль на существующий лист/книгу?

Как создать макрос из Delphi? Как выполнить макрос, имеющийся в книге?

Вам не удастся создать макрос программно, т.к. по умолчанию в Excel VBA Project отключен доступ к VBA из программ. Как включить эту возможность, читайте «PRB: Programmatic Access to Office XP VBA Project Is Denied»

Пример создания макроса с параметром и вызов его из программы:

Если все же вам очень нужно добавить макрос, независимо от настроек доступа к VBA Project, то можно воспользоваться листом макросов xlExcel4MacroSheet. Макроязык представляет собой «команды».

Будет ли работать макрос при выставленной «Очень высокая безопасность макросов» в Excel’е пользователя?

Записанные макросы в книге, открытой вашей программой всегда будут работать, независимо от выставленного в Excel’е «Уровня безопасности» для макросов.

Почему не работает макрос, записанный в книге?

Записанный в книге макрос может не работать по причине установленного антивируса. Например, установленный «Kaspersky Office Guard», входящий в состав «Антивирус Касперского», начисто отключает все вызовы VBA.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×