Макрос для копирования и переименования листов Excel
К именам листов рабочей книги предъявляется несколько ограничений:
1) длина введенного имени не должна превышать 31-го знака;
2) имя листа не должно содержать ни одного из следующих знаков: двоеточи” ( : ), косая черта ( / ), вопросительный знак ( ? ), звездочка ( * ) и квадратные скобки ( [ ] );
Процесс переименования
Процедура переименования листов в Экселе в целом интуитивно понятна. Тем не менее, у некоторых пользователей, которые только начинают освоение программы, возникают определенные трудности.
Прежде, чем перейти непосредственно к описанию способов переименования, выясним, какие названия давать можно, а присвоение каких будет некорректным. Имя может быть присвоено на любом языке. При его написании можно использовать пробелы. Что же касается основных ограничений, то следует выделить следующие:
При составлении имени листа нужно учитывать вышеуказанные правила. В обратном случае программа не даст завершить данную процедуру.
контекстное меню ярлыка
Наиболее интуитивно понятный способ переименования – это воспользоваться возможностями, которые предоставляет контекстное меню ярлыков листов, расположенных в левой нижней части окна приложения сразу над строкой состояния.
двойной щелчок по ярлыку
Существует и более простой способ переименования. Нужно просто кликнуть двойным щелчком по нужному ярлыку, правда, в отличие от предыдущего варианта, не правой кнопкой мыши, а левой. При использовании данного способа никакого меню вызывать не нужно. Наименование ярлыка станет активным и готовым к переименованию. Вам останется только набрать нужное название с клавиатуры.
Как переименовать лист рабочей книги при помощи мыши?
1) в окне открытой книги дважды щелкнуть левой кнопкой мыши на ярлычке нужного листа;
2) набрать нужное имя листа, соблюдая требования к листам, изложенные выше;
3) нажать клавишу Enter на клавиатуре для закрепления введенного имени.
Вставка нового листа в Excel
Для того чтобы изменить количество листов, открываемых по умолчанию в новой книге Excel, перейдите к представлению Backstage, нажмите Параметры, затем выберите количество листов, которые необходимо включать в каждую новую книгу.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
- УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
Скрытие и отображение листов
Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:
где expression – переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье .
Описание задачи
Как правило, когда мы долго работаем с большим количеством листов, возникает потребность в их переименовании. Переименовать листы поштучно достаточно просто дважды кликнув по вкладке и введя новое название. Однако, если листов десятки, то это утомительно и отнимает время. Гораздо удобнее использовать надстройку VBA-Excel.
C помощью нее переименовать все листы в книге можно следующим образом:
Как копировать и переименовать лист Excel макросом
Представьте ситуацию: Вы готовите планы работ для сотрудников определенного отдела фирмы. Пример таблицы плана выглядит так:
Руководитель этого отдела пожелал, чтобы названия листов планов работ для каждого сотрудника содержали их имена и фамилии.
Многократное копирование листов шаблона для составления и заполнения планов работ сотрудников с переименованием, потребует много времени и сил если делать все это вручную. Поэтому напишем свой макрос, который упростит данную задачу.
Техническое Задание (ТЗ) для макроса заключается в следующем. После выделения ячеек, которые содержат названия для листов нужно скопировать лист с шаблоном для планов работ ровно столько сколько будет выделенных ячеек и ввести соответствующие названия в ярлычки.
Для этого сначала откройте редактор кода макроса: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (ALT+F11):
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него следующий код макроса:
Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно:
Теперь перейдите на лист «Имена и Фамилии» и выделите в нем диапазон ячеек, которые содержат имена и фамилии сотрудников. И нажмите на кнопку ОК.
В результате чего макрос сам автоматически скопирует планы работ для каждого сотрудника и присвоит новым листам соответственные имена и фамилии.
Перемещение/копирование листов в Excel
Перемещать листы в Excel с помощью мышки очень просто: возьмите ярлычок листа и, двигаясь по горизонтали, перетащите его на новое место.
Если во время этой операции вы нажмете и будете удерживать клавишу [Ctrl], то лист… правильно, скопируется! (Вспомните, как мы копировали файлы в WINDOWS ). То же самое можно делать с группой листов.
Эту же операцию можно выполнить в Excel с помощью команды контекстного меню листа Переместить/скопировать или команды Правка/Переместить/скопировать лист . Ими особенно удобно пользоваться, если вы хотите скопировать или переместить лист в другую книгу.
Перед копированием или перемещением листа в другую книгу необходимо открыть книгу-получатель. Кроме того, в случае копирования не забудьте установить флажок в поле Создать копию . В противном случае лист просто переместится в указанное вами место.
В книге Мои таблицы. xls переместите лист Население Земли в конец книги, верните его на прежнее место, сделайте копию листа в этой же книге, скопируйте его в новую книгу.
Создайте пустой файл Мои таблицы-копии.xls ( для этого новую рабочую книгу сохраните под этим названием в каталоге C:ST). Скопируйте в него лист Население Земли.
Как сменить название листа
При создании новой книги Excel рабочие листы по умолчанию носят имя Лист1, Лист2 и т.д.
Как правило, листы переименовывают в более подходящие имена, в зависимости от его содержания. Это может быть и «Отчет» и «График» и т.д. Чтобы переименовать название листа, дважды кликните на ярлыке данного листа.
Программа выделит этот ярлык и включит название в режим редактирования, так что вы сможете прописать любое название какое захотите.
1. Название листа может содержать максимум до 31 символа, причем пробелы допускаются.
2. В названии листа нельзя прописывать следующие символы:
Учтите, что именно на ярлыке листа будет отображаться название, поэтому для длинного названия необходимо будет более длинный ярлык. Таким образом, если вы хотите использовать более длинные имена листов, то без прокручивания полосы вы сможете увидеть только несколько ярлыков.
Как изменить имя листа при помощи контекстного меню?
Чтобы переименовать лист при помощи контекстного меню, нужно:
1) в окне открытой книги один раз кликнуть правой кнопкой мыши на ярлыке нужного листа;
3) набрать новое имя листа в соответствии с требованиями к именам листов;
4) нажать клавишу Enter на клавиатуре, чтобы закрепить новое имя.
Удаление листа в Excel
Удаление листа из рабочей книги нельзя отменить. Это одно из немногих необратимых действий в Excel. Хорошенько подумайте, прежде чем удалять их.
Если требуется ограничить изменения, которые разрешается вносить в текущий лист, Вы можете его защитить. Для этого щелкните правой кнопкой мыши по ярлычку листа и из контекстного меню выберите пункт Защитить лист.
Программирование MS Excel: Вопросы по программированию в VBA
Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:
Vba Excel Проверка Наличия Листа по Имени
Содержание
- Почему на листе модуля в качестве разделителя используется символ ‘;’ а не ‘,’
- Как определить разделитель целой и дробной части и прочие международные установки.
- Выключение отображения изменений на экране, а также про увеличение скорости работы макросов
- Грабли при использовании ScreenUpdating в функциях в Excel 97
- Как определить есть ли комментарии на рабочем листе
- Как защитить лист от пользователя, но не от макро
- Чем отличается ThisWorkBook от ActiveWorkbook
- Как вычислить формулу в макро
- Как убрать заголовки строк и столбцов
- Как определить использованную область листа
- Как определить пересечение областей
- Как найти последную используемую строку на листе
- Еще один способ
- Использование именнованной области в качестве базы данных
- Макро для отслеживания появления новых данных в диаграммах
- Обновление данных в сводной таблице
- Обновление запроса к Query работает только на видимом листе
- Как вызывать функции рабочего листа из VBA
- Как получить список файлов в каталоге
- Почему Excel не печатает из окна диалога
- Как установить фокус ввода в окне диалога
- Как дождаться завершения программы запущенной функцией Shell()
- Формулы, вставленные из VBA, нерассчитываются при вставке. Их приходится пересчитывать. Что делать ?
- Макрос для пересчета ячеек только выделенной области
- Как передать диапазон в функцию VBA ?
- Один способ установить add-in не используя Excel
- Другой способ установить Add-In используя Excel
- Как вставить свое изображение для кнопки в toolbar
- Доступ к Access из Excel
- Доступ к Access из Excel через ini-файлы
- Доступ к Excel через OLE из Visual Basic (это не VBA)
- Stephen Bullen учит чайников делать коллекции классов в VB
- Управление Excel’om через DDE
- Как организовать Прогресс-Бар
- Как определить размер текста
- Как избежать сообщений Excel при удалении листов и т.п.
- Если Вы хотите использовать категории функций в своих XLA — обломитесь
- Назначение макро на горячую клавишу
- Для чайников — использование SET, WITH и скрытых имен (это уже не для чайников)
- Как скрывать и показывать меню
- Использование SpecialCells(xlVisible) для перебора видимых строк (результат автофильтра)
- Как вернуть массив из пользовательской функции
- Как определить последнюю запись в таблице Excel?
- Как отменить выделение диапазона ячеек ?
- Удаление листов в зависимости от даты.
- Подавление «горячих» клавиш.
- Подсказки к Toolbar
- Как определить адрес активной ячейки
- Подсказки к Toolbar (Excel’95)
- Запуск Excel с поиском ячейки
- Как задать имя листу, который будет вставлен ?
- Как проверить существует ли лист?
- Как обратиться к ячейке по ее имени ?
Это зависит от настроек Excel в меню Сервис/ Параметры/ Модуль/ РазделительСписков. Для извлечения текущих значений используйте свойство Application.International. Можно определить десятичный разделитель, разделитель тысяч и пр. Как определить есть ли комментарии на рабочем листе
Как узнать есть ли хоть один Notes (комментарий) в рабочем листе, кроме как перебором по всем ячейкам? . Без этого не работает.
Попробуйте заменить ссылки типа ActiveWorkbook.WorkSheets(«.. на ссылки вида ThisWorkBook.WorkSheets(«..
Дело в том, что когда выполняется код надстройки, активной книгой в Excel’е является не сама надстройка! Конструкция ThisWorkbook позволяет сослаться на книгу, в которой в настоящий момент выполняется код Excel VBA. Примечание: Это общий принцип создание надстроек Excel. Как вычислить формулу в макро
Если у Вас есть строка с формулой, Вы можете вычислить ее при помощи функции VBA Evaluate. Как определить использованную область листа
Как определить пересечение областей
Использованную часть рабочего листа можно определить через свойство Worksheet.UsedRange. Для определения пересечения областей можно использовать метод Application.Intersect(). Если Вам надо определить какие ячейки нужной Вам области заняты данными (например пользователь выделил целый столбец, определив пересение столбца и UsedRange можно сократить число анализируемых ячеек).
- Лист формы, заполняемый консультатом при совершении акта консультации клиента
- Лист реестра всех работ проделанных консультантом
- Лист реестра работ по конкретному клиенту всех консультантов
- Происходит проверка на непустые значения (имена «nonempty»)
- Проверка наличия баз куда будут копироваться записи (одна форма может вставлять записи в несколько таблиц). Используются имена «bd_name»
- Копирование данных из полей формы на листы баз. Данные вставляются в столбцы базы в соотвествии с именами «bd_scol».
- Листы баз представляют собой некоторым образом «отчеты», имеющие заголовок , тело и footer (не знаю как это будет по русски). записи добавляются в «тело», при этом для форматирования вставляемой записи используется скрытая область «OneRow». Копирование производится в область листа начало которой помечено как «StartDB».
- Лист формы переходит в «архивное» состояние, для чего ему присваивается уникальное имя (содержимое именнованных ячеек «name»). Лист покрывается защитой от изменений. Из листа формы вычищаются все имена для «облегчения» книги (зачем хранить ненужную информацию).
- Последние использованные данные сохраняются в «невидимых» именах для их последующего дефолтного вставления в новый шаблон формы.
Файлы примера находится здесь.. Эти шаблоны должны быть брошены в каталог шаблонов офиса. Для начала работы создайте книгу из шаблона ConsultantBook.xlt
Да, так о чем это я ? По поводу имен — при изменении размеров базы (именнованной области) из макро хорошо использовать метод Resize : Этот фрагмент увеличивает область «YourBase» на 1 строку. Поистине Excel неисчерпаем .
Еще один hintпо поводу использования именнованных областей в качестве базы данных. Макро для отслеживания появления новых данных в диаграммах
Для этого существует функция VBA dir. Если Вас неудовлетворяет скорость ее работы на больших каталогах можно попробовать использовать функцию ДОС dir, обрабатывая файл с результатами ее работы. Почему Excel не печатает из окна диалога
Функции Print и PrintPriview не работают при открытом пользовательском окне диалога. Как установить фокус ввода в окне диалога
Для этого существует свойство объекта типа Dialog.Focus=»Название». Можно также изменить направление обхода элементов. Как дождаться завершения программы запущенной функцией Shell()
Функции Shell запускает указанное приложение не дожидаясь его завершения (асинхронно). Для проверки завершения запущенного приложения можно использовать оператор AppActivate. Формулы, вставленные из VBA, нерасчитываются при вставке. Их приходится пересчитывать. Что делать ?
Макрос для пересчета ячеек только выделенной области
Как показала практика, если этот макрос не работает — (не пересчитывает ячейки или пишет нечто вроде #знач), то у Вас обнаружена циклическая ссылка и Excel «не хочет» пересчитывать значения. Ищите ссылку и уберите ее. Существуют специальные утилиты для поиска циклических ссылок, можете воспользоваться ими (ищите на авторских страницах, я видел кажется кажется у Stephen Bullen)
По поводу невставляемости формул из в VBA — я _очень_ думаю что это результат наличия циклических ссылок. Потому что в нормальном случае все работает. Как передать диапазон в функцию VBA ?
В функции VBA параметр должен быть объявлен как Variant, тогда на вход функции будет передан объект типа Range . Один способ установить add-in не используя Excel
Ваша программа может бросить XLS файл в директорию автозагрузки Excel (там где живут разные personal.xls). А этот файл уже может сделать все что хочешь, например установить дополнение средствами VBA и подтереть себя . Хитро? Как вставить свое изображение для кнопки в toolbar
Смотри пример Андрея Кириенко — запуск из Visual Basic Excel’a и создания в нем рабочей книги. Доступ к Access из Excel
Вот фрагмент кода, который создаёт таблицу «BalanceShifr» базе данных MS Access: Примечание: Не забудьте выставить в Excel ссылки на объекты DAO!
В редакторе Visual Basic Tools/References/Available References/
[x] MicroSoft DAO . Library Доступ к Access из Excel через ini-файлы
API для для взаимодействия Access и Excel’a через ini-файлы имени Emil Sildos. Собственно mLIni.bas файл здесь. Управление Excel’om через DDE
Есть утилита для управления EXCEL из командной строки (или командного файла) через DDE. Команды можно записать в текстовом файле и выполнить его. Команды DDE соответствуют макро языку Excel 4 и из них нельзя вернуть значения. Но лучше использовать OLE, если это возможно. Как организовать Прогресс-Бар
При выполнении тех или иных действий Excel может запрашивать подтверждения. Например при удалении листа, закрытии файла с несохраненными данными и (!) при проведении операции для которой Excel’y нехватает памяти для Undo. Для подавления этих сообщений используйте Application.DisplayAlerts: Любопытный ход- можно сказать Excel что файл якобы сохранен и тогда он не станет возражать против его закрытия. Назначение макро на горячую клавишу
Для это используется метод Application.OnKeys. Насколько мне известно такоим образом можно «сбросить» стандартные назначения клавиш, переопределив их на свой (пустой) макрос.
Найти последнюю запись в электронной таблице можно из VB следующим способом: Как отменить выделение диапазона ячеек ?
После прекращения работы макроса диапазон остается выделенным. Как это выделение убрать? Можно попробовать следующее: Фокус ввода попадёт после этого на первую ячейку ранее выделенного диапазона. Вообще, решение состоит в прермещении выделения на какую-либо ячейку.
Маленькой хитростью является выделение скрытой ячейки Удаление листов в зависимости от даты.
Вот кодфункции на Excel VBA, который решает данную проблему. Подавление «горячих» клавиш.
Как подавить доступ по «горячим» клавишам, имеется ввиду предопределенные в Excel клавиши типа Ctrl-O и т.д.? Попробуйте. Подсказки к Toolbar
Как сделать к «само нарисованным» кнопочкам на Toolbar’е подсказки? (Ну, те, что после 2-х секунд молчания мышки появляются)
Вот так: (в Excel’97 VBA)
Примечание: На VBA для Excel’95 это делается несколько иначе! Как определить адрес активной ячейки
Как в макросе узнать и использовать текущее положение курсора (не мышиного, естественно)?
Очень просто:
ActiveCell.Row и ActiveCell.Column покажут координаты активной ячейки. Подсказки к Toolbar (Excel’95)
Как сделать свой собственный Toolbar с tooltip’ами на кнопках в Excel’95?
Вот фрагмент кодадля Excel’95, который создаёт toolbar с одной кнопкой с пользовательским tooltiр’ом. Нажатие кнопки приводит к выполнению макроса NothingToDo()
Нint: В Excel’97 этот код тоже работает! Запуск Excel с поиском ячейки
Как запустить Excel, чтобы оказаться на ячейке содержимое которой известно заранее?
Можно Вот так.
Достаточно выполнить этот код из макроса Auto_Oрen()!
Примечание: Протестировано и отлажено в Excel’97. Как задать имя листу, который будет вставлен ?
Хочy через Excel VBA задать имя листу, который будет вставлен. Но у команды Sheets.Add нет такого параметра! Как бороться ?
Можно решить проблему следующим способом.
Примечание: Отлажено и протестировано в Excel’97. Как обратиться к ячейке по ее имени ?
Как обратиться к ячейки по ее имени? Т.е. есть Лист1 и в нем ячейки с именем Дебет и Кредит. Хочy подсчитать Дебет-Кредит средствами Excel VBA. Попробовал Range(Дебет)-Range(Кредит), ругается, что не описаны переменные.
Если я правильно понял, нужно разыменовать ячейку из кода Excel VBA. Вот фрагмент кода, который решаеттакую задачу:
Примечание: Отлажено и протестировано в Excel’97.
Создадим своё собственное меню, со своими командами, и которое работает только в нашей книге.
Для этого воспользуемся дополнительными событиями для книги — это Workbook_Activate() иWorkbook_Deactivate().
VBA в Excel. Событие листа
- УникИмяЛиста – уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N – индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа – имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Теперь если вы хотите скопировать лист шаблона для заполнения плана работ и создать копии плана для каждого сотрудника имена с фамилиями которых будут присвоены названиям листа, то перейдите на исходный лист с шаблоном плана работ и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«PlanRabot»-«Выполнить». Сразу же после запуска макроса появиться диалоговое окно: