Программы, надстройки и макросы для обработки таблиц Excel (преобразование и форматирование таблиц, создание новых таблиц из исходных)
-
Надстройка FillDocuments для MS Excel: общие сведения
Предназначение программы: заполнение множества документов данными из Excel нажатием одной кнопки.
Для работы программы требуется таблица Excel с данными для подстановки, и папка с шаблоном (шаблонами) документов.
В качестве шаблонов можно использовать файлы Word и Excel.
На выходе получаются заполненные файлы исходного… -
Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет легко автоматизировать обработку прайс-листов.
Вспомните ситуацию: поставщики в очередной раз прислали свои прайс-листы в Excel — конечно, в совершенно разных форматах — и вам нужно объединить данные из всех этих файлов в одну таблицу. А составители этих таблиц будто специально хотели усложнить вам жизнь… -
Программа предназначена для сравнения и подстановки значений в таблицах Excel.
Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
надстройка «Lookup» поможет сделать это нажатием одной кнопки.
То же самое можно сделать при помощи формулы =ВПР(), но:формулы…
-
Этот макрос предназначен для сбора (загрузки) информации из файлов Excel, расположенных в одной папке.
Для работы этого макроса, помимо него самого, вам понадобится добавить в свой файл:функцию FilenamesCollection для получения списка файлов в папке
функцию GetFolder для вывода диалогового окна выбора папки с запоминанием выбранной папки
прогресс-бар для отображения…
-
Программа предназначена для автоматизации процесса создания форм ввода и редактирования данных из таблиц Excel.
Сейчас реализована лишь малая часть программы.
Но уже сейчас программа достаточно точно распознаёт типы полей таблицы, и для полей типа «выпадающий список» и «поле с маской ввода» формирует список значений и маску ввода соответственно.
Как будет свободное время -… -
Программа предназначена для формирования (заполнения) договоров купли-продажи.
Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок.
Для запуска программы достаточно нажать зеленую кнопку — и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке… -
Макрос предназначен для создания текстовых файлов в кодировке UTF-8.
Исходными данными является таблица Excel из 12 столбцов.
Сначала, макрос создаёт папку для будущих текстовых файлов.
Папка создаётся в том же каталоге, где расположена книга Excel.
Далее, для каждой строки таблицы, макрос формирует подпапку,
используя в качестве её названия текст из 7-го столбца таблицы.
И потом, когда папка… -
Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.
В прикреплённом файле, на первом листе («исходные данные»), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации)
Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные… -
Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист.
При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов:В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»:
Надстройка SearchText является расширенной версией надстройки для…
-
Программа предназначена для сравнения цен конкурентов из их прайсов с прайс-листом вашей организации.ВНИМАНИЕ: Недавно разработана многофункциональная программа для обработки прайс-листов
Новая программа объединения и обработки прайс-листов доступна на сайте для скачивания и тестирования на различных наборах прайс-листов.
Исходными данными для программы являются:
ваш прайс…
-
К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым:
(количество файлов, и количество строк данных в каждом файле не ограничено)
1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;1
1c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1
1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1
А надо из всего этого… -
Программа предназначена для автоматизации формирования договоров комиссии и купли автотранспортного средства.
В качестве исходных данных выступают:таблица Excel с реквизитами создаваемых документов
папка с шаблонами договоров (в формате dot)В исходной таблице Excel занесены все необходимые исходные данные для заполнения бланков договоров, а также, при помощи пользовательских формул (UDF),…
-
База данных «Преподаватели» предназначена для автоматизации работы администрации учебных заведений.Программа обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.
Эта база данных представляюет собой урезанную и немного изменённую версию программы АИСС СПК.
Программа обеспечивает:
Хранение полной…
-
Программа предназначена для поиска минимальных цен на товары в Яндекс.Маркете
UPDATE: Продажа программы прекращена 14 мая 2015 года, ввиду нерентабельности техподдержки
(это единственная из моих программ, где я не могу гарантировать работоспособность, — т.к. всё зависит от Яндекса, который часто меняет сайт, и вводит ограничения типа капчи).
Техподдержка программы тоже прекращена в полном… -
Макрос FilenamesWithValues предназначен для получения списка файлов Excel из заданной папки, и загрузки значений из каждого найденного файла.
В отдельной ячейке задаётся путь к папке, которая будет просмотрена в поисках файлов Excel.
При формировании списка файлов проставляются гиперссылки на найденные файлы, указывается дата создания файла.
Из каждого файла загружаются значения с… -
Программа предназначена для работы с заказами, оформляемыми менеджерами на выставках.Основные функции программы:
создание (заполнение) новых заказов
редактирование существующих заказов
объединение нескольких заказов в один
формирование заявки на продукцию на основании данных их сформированных заказов
Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент…
-
Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов.АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.
Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения.
Программа обеспечивает:
Хранение полной…
-
Если ваш макрос выдаёт ошибку при использовании метода SpecialCells — возможно, причина в установленной защите листа Excel.
Почему разработчики Microsoft отключили работу этой функции на защищённых листах — не совсем понятно, но мы попробуем обойти это ограничение.
Итак, нам надо получить все заполненные ячейки из некого диапазона листа Excel.
Обычно для этого используется вызов… -
Если вам нужно рассылать письма из Excel,
воспользуйтесь готовым решением в виде надстройки FillDocuments
Ознакомьтесь с возможностями и способами рассылки писем из Excel,
а также с инструкцией по настройке рассылки через TheBATМакроc предназначен для автоматизированной рассылки почты из Excel.
Для рассылки используется почтовая программа TheBAT!
(подразумевается, что эта программа на… -
Надстройка предназначена для выполнения множественных замен в выделенном диапазоне ячеек.
После запуска надстройки, появляется панель инструментов из 3 кнопок:
Кнопка «Выполнить все замены» — выполняет замены в выделенном диапазоне ячеек
Кнопка «Изменить список замен» — отображает лист настроек, где в первом столбце находится список заменяемых…
-
Функция UniqueValues возвращает коллекцию, содержащую уникальные непустые значения из диапазона ячеек (или массива)
Function UniqueValues(ByVal arr) As Collection
‘ функция получает в качестве параметра массив любой размерности
‘ возвращает коллекцию уникальных НЕПУСТЫХ значений
Set UniqueValues = New Collection: On Error Resume Next
For Each v In arr
v = Trim(v): If Len(v… -
Программа выполняет поиск организаций по ИНН на официальном сайте для размещения информации о государственных (муниципальных) учреждениях bus.gov.ru, и заносит данные о найденных организациях в таблицу Excel.
Смотрите также парсер сайта bus.gov.ru,который создаёт в Excel таблицу со списком организаций с этого сайта по выбранному региону и сферам деятельности.
На скриншоте красным цветом…
-
Функция GetValue предназначена для получения данных из закрытой книги Excel
Использовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазона ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов
Пример использования функции:
Sub ПримерИспользования_GetValue()
p =… -
Программа предназначена для загрузки списка товаров из актов о приеме-передаче основных средств.
Поддерживаются акты по формам № ОС-3.1 и № ОС-3.3, возможно добавить поддержку актов других форм (в формате Excel).
При запуске макроса, выводится диалоговое окно выбора папки, после чего, в выбранной папке, производится поиск всех файлов Excel.
Для каждого из найденных файлов Excel, программа… -
Данный макрос автоматизирует процесс переключения раскладки клавиатуры (смену языков ввода) при работе с таблицами в Excel.К примеру, вы заносите данные в таблицу, где в некоторые столбцы требуется вводить русские слова (фамилия, имя, и т.п.), а в другие столбцы — английские (марка и модель авто, и т.д.)
Чтобы каждый раз не переключать раскладку вручную — можно воспользоваться WinAPI…
-
Часто бывает, что надо получить данные из другой, открытой вместе с используемой, книги Excel.
Данная функция помогает получить ссылку на другую, открытую в текущий момент, книгу:
Sub ПримерИспользования_GetAnotherWorkbook()
Dim WB As Workbook
Set WB = GetAnotherWorkbook
If Not WB Is Nothing Then
MsgBox «Выбрана книга: » & WB.FullName, vbInformation
Else… -
Надстройка для транслитерации или кодирования (замены символов их кодами) выделенного диапазона ячеек Excel
При запуске надстройки в Excel формируется панель инструментов, при помощи которой можно выполнять следующие действия:Нажатием кнопки RU->EN выполнить транслитерацию выделенного диапазона ячеек
Нажатием кнопки EN->RU выполнить транслитерацию выделенного диапазона ячеек
В…
-
Программный комплекс, предназначенный для автоматизации учёта и администрирования сети связи телефонной или телекоммуникационной компании.Программа позволяет хранить и редактировать базу данных объектов (в виде файлов Excel), просматривать существующие трассы и формировать новые.
Особенность программы — возможность учёта и администрирования узлов связи с нестандартными…
-
Программа позволяет сформировать отчёты по базе данных больницы.
Кроме того, реализован ввод данных в базу о новых пациентах. -
Функция TextFile2Array предназначена для преобразования файла CSV в двумерный массив
Очень часто при работе с текстовыми файлами (и, в частности, с файлами CSV) приходится их загружать на лист Excel, предварительно производя фильтрацию данных в этом файле.
Чтобы упростить весь процесс — от выбора файла CSV в диалоговом окне, до разбиения загруженного из файла текста в двумерный массив, и была… -
Программа предназначена для формирования прайс-листов на ноутбуки с соответствии с требованиями интернет-каталога Onliner.byОсновные функции программы:
(учитываются цены фирм-конкурентов, цены onliner.by и надбавка фирмы)
загрузка каталога ноутбуков (названия, характеристики, цены) с сайта onliner.by в файл Excel, и обновление этого каталога
назначение соответствий моделей…
-
Программа предназначена для составления учебного расписания.
На отдельных листах хранится список преподавателей вуза, список групп и занятий у этих групп по дням недели.
Макрос делает выборку по всем преподавателям (или по выбранному преподавателю),
фильтрует по заданной группе (курсу), если не выбрана опция «все курсы»,
сортирует по времени начала занятия, группирует по дню… -
Система учёта заявок предназначена для автоматизации ввода, редактирования и учёта заданий на заказ запасных частей для автомобилей.Программа позволяет производить поиск по базе данных, и распечатку информации о выбранном заказе.
Эта база данных представляет собой урезанную и немного изменённую версию программы АИСС СПК.
-
Программа предназначена для обработки таблиц с тарифами на междугородную и международную телефонную связь.Присутствует опция выгрузки обработанной таблицы в файл формата XML.
При запуске программы (которая выполнена в виде надстройки Excel) формируется дополнительная панель инструментов:
Формируемый надстройкой XML-файл имеет такую структуру:
-
Программа предназначена для формирования заданий на производство.
Исходными данными выступают таблицы Excel и файлы XML.
При конвертации таблиц происходит обработка данных и перестановка столбцов.
При запуске программа формирует панель инструментов с 6 кнопками — для обработки файлов различной структуры. -
Программа предназначена для формирования единого прайс-листа автозапчастей на основании нескольких исходных прайсов различной структуры.ВНИМАНИЕ: Описанная в данной статье программа послужила прототипом для новой, многофункциональной программы, где пользователь сам может настраивать обработку прайс-листов
Новая программа объединения и обработки прайс-листов доступна на сайте для…
-
Макрос формирует прайс-лист для отправки клиенту.
Исходными данными являются позиции из основного прайс-листа фирмы.
При формировании нового прайса учитывается бонус продавца, а также коэффициенты дохода и доставки.
Помимо этого простейшего макроса, у нас на сайте есть множество других программ для работы с прайс-листами.
Например, для сбора данных из прайсов разных поставщиков… -
Программа предназначена для преобразования файлов формата .HTM с объявлениями о продаже недвижимости (файлы являются результатом сохранения веб-страниц с сайтов публикации объявлений) в формат Microsoft Excel.
Программа производит анализ текста объвлений, распознаёт значения площади и этажности, отделяет второстепенные данные (комментарий) из текста объявления, преобразует различные форматы цен (… -
Если у вас есть таблица Excel, в которой, в определённом столбце, через запятую перечислены значения (или диапазоны значений), а вы хотите получить аналогичную таблицу, но чтобы в каждой строке было только одно значение, — то вам на помощь придёт функция ExtendArray.(пример работы функции можно увидеть на прикреплённом изображении)
В своей работе ExtendArray использует функцию…
-
Программа предназначена для предпечатной подготовки, и последующего вывода на печать (на виртуальный ПДФ принтер) документов Excel.
Программа позволяет:подгонять файлы, выгруженные из 1С, под печать на одной странице
изменять ориентацию страницы для счетов-фактур
вставлять реквизиты (фамилии, информацию о доверенностях) в специально выделенные для этого ячейки
вставлять…
-
Программа предназначена для работы с заявками на оборудование.Цели программы:
автоматизация составления и редактирования заявок
преобразование имеющихся заявок в виде отдельных файлов Excel различной структуры к единому виду
формирование отчётов по категориям и типам заявок
стандартизация печатной формы заявок
разграничение доступа на работу с базой данных заявок
…
-
Данная программа предназначена для выборки выражений по заданным «минус словам»
В качестве базы используется выгрузка из файлов формата csv, данные загружаются в столбец «A» (далее БАЗА).
В столбец «E» заносятся слова которые нужно найти в БАЗЕ. При нажатии на кнопку «Добавить минус слова» происходит выборка вхождений заданных шаблонов… -
Макрос предназначен для экспорта выделенного диапазона ячеек книги Excel в код HTML.
Смотрите также надстройку для экспорта таблицы или выделенного диапазона ячеек в HTML
Результат (HTML код таблицы) помещается в буфер обмена.
Первая строка выделенного диапазона ячеек считается заголовком таблицы (обрамляется тегами <th> вместо <td>)
Например, мы имеем… -
Sub ПримерИспользования()
‘ задаём полный путь к обрабатываемому файлу
ПутьКФайлу$ = ThisWorkbook.Path & «» & «Contract.XLS»
Application.ScreenUpdating = False ‘ отключаем обновление экрана
arr = LoadArrayFromWorkbook(ПутьКФайлу$, «a2», 30) ‘ загружаем данные‘ выводим результаты в окно Immediate
Debug.Print «… -
Программа предназначена для сбора данных из отчётов нефтедобывающих компаний.
Исходными данными выступают файлы оперативной отчётности следующих типов:Добыча
Переработка
Сбыт
Сервис
Анализ
На распределение
Во втором столбце таблицы перечислены названия компаний, чьи отчеты программа будет обрабатывать,
а в строке заголовка — список месяцев, данные по по… -
Надстройка предназначена для быстрой конвертации выделенного диапазона ячеек в HTML код для вставки на сайт.
При запуске надстройки, формируется панель инструментов (на ленте, на вкладке Надстройки)
с 2 кнопками: экспорт в HTML всей таблицы, или только выделенного диапазона ячеек
Файл надстройки, — во вложении к статье.
Программа корректно обрабатывает объединённые ячейки.
Количество… -
Клавиша:
Ctrl + T
Макрос:
Создание Текстовых ФайловКлавиша:
Ctrl + 4
Макрос:
Окраска Объединённых ЯчеекКлавиша:
Ctrl + 5
Макрос:
Окраска Всех Объединённых ЯчеекКлавиша:
Ctrl + G
Макрос:
Объединение Значений Из ЯчеекКлавиша:
Ctrl + Shift + G
Макрос:
Разъединение Значений Из ЯчеекКлавиша:
Ctrl + Shift + D
Макрос:
Поиск Дубликатов В КнигеКлавиша:
Ctrl + Shift + O
Макрос:… -
Программа предназначена для расчёта твердости металла (сплава) по изображению оттиска, выполненного на специальном оборудовании (с многократным увеличением)
В качестве исходных данных выступает 24-битное изображение в формате BMP, на основании результатов обработки которого (считывается массив, содержащий цвета отдельных пикселей) и производятся все дальнейшие вычисления.
Сначала из массива… -
Программа предназначена для вывода отчёта по мероприятиям налоговой инспекции.
Исходные данные для обработки расположены на других листах того же файла Excel:
перечень мероприятий налогового контроля, проведенных в отношении контрагентов
поручения об истребовании документов (информации)
запросы в кредитные организации о предоставлении сведений по операциям на счетах…
-
Программа предназначена для автоматизации рабочего места сотрудника, отвечающего за регистрацию, прием на работу, и увольнение иностранных граждан.
В качестве исходных данных используется таблица изображенная на скриншоте.
В этой таблице содержится нужная информация, необходимая для заполнения шаблонов документов.
Программа заполняет следующие документы:Доверенность (doc)
Заявление на…
-
Макрос предназначен для создания сводной таблицы и диаграммы для отчёта по трафику.В качестве исходных данных выступает таблица со статистикой доступа в интернет — сформированная программой создания отчётов по статистике
Создаваемая сводная диаграмма позволяет легко проанализировать причины перерасхода трафика, а сводная таблица предоставляет детализированный отчёт по каждому сайту.
При…
-
Программа предназначена для обработки отчётов управления по сделкам с ценными бумагамиОсновные функции программы:
Создание новых отчётов управления (за следующий квартал) на основании текущих отчётов
Внесение изменений и дополнений в существующие отчёты
Формирование сводной таблицы по вкладам для оценки роста, а также коэффициентов ликвидности и версификации вкладов
Обработка…
-
Программа предназначена для объединения однотипных отчётов, сформированных программой 1С
Обрабатываемые отчёты (файлы Excel) хранятся в одной папке, и имеют структуру, изображенную на скриншоте:В итоговой таблице, загруженные строки группируются (объединяются) при совпадении значений в 2 полях — «модель» и «название»,
при этом количество в объединяемых… -
Программа позволяет загружать котировки различных валют из файлов формата .HTM, и анализировать их при различных параметрах анализа.
Все котировки разбиваются на отдельные блоки (временные диапазоны для разбивки задаются на форме настроек), и анализ производится по каждому блоку в отдельности.
Есть возможность исключить из расчётов данные за пятницу.
Изменение параметров вычисления значений BS… -
Программа предназначена для выборки данных из текстовых файлов, которые были сгенерированны инвентаризационной программой
В качестве исходных данных для макроса используются текстовые файлы, в которых находится информация о конфигурации компьютеров
(на каждый компьютер приходится по 3 файла).
Работу макроса можно разделить на следующие этапы:Выбор папки с данными по всем компьютерам…
-
Программа служит для преобразования тиковых значений котировок в свечи необходимого периода
Исходный файл в формате .csv получается в результате выгрузки (экспорта) котировок с сайта www.finam.ru (Фьючерсы ФОРТС),
и содержит большое количество строк (записей) — около 1 миллиона за 1 день.
В исходном файле CSV имеется таблица со следующими столбцами:
<TICKER> <PER> <DATE… -
Программа предназначена для вывода информации о скором наступлении события
Каждый раз при открытии файла (и автоматической активации макроса), происходит проверка разницы между текущей датой, и датой окончания действия полиса
(столбец номер 7 на скриншоте).
Если эта разница находится в пределах 10 дней (параметр можно менять по своему усмотрению), то на отдельный лист выводится ссылка на… -
Программа предназначена для формирования отчёта по серверам компании (список технических характеристик, IP адресов, установленного программного обеспечения)
В качестве исходных данных для программы имеется выгрузка из Help Desk системы Acme в формате XLS, но этот отчёт, хоть и содержит все необходимые данные, крайне неудобен для анализа и дальнейшей обработки:Программа производит поиск…
-
Программа предназначена для анализа ожидаемой доходности различных портфелей(рассматриваются всевозможные комбинации проектов)
При помощи формул типа =СЛЧИС() на листах с характеристиками проектов генерируются различные комбинации исходных значений, на основании которых формулами рассчитывается доходность проекта.
Методом Монте-Карло формируются массивы значений (по одному массиву для…
-
Программа предназначена для создания отчётов по детализации телефонных звонков (междугородная и международная связь), последующей упаковки созданных детализаций в ZIP архив, и автоматизированной рассылки сформированных писем абонентам.
При запуске программа ищет в заданной папке исходные файлы с детализацией (упакованные в ZIP файлы DBF), и на основании из этих файлов формирует (по шаблону, с… -
Программа позволяет сформировать списки игр, отсортированные по различным критериям.
На основании результатов программы букмекеры могут правильно выстроить «линию», то есть, учитывая массу нюансов, с достаточной долей вероятности определить фаворитов и аутсайдеров в предстоящих играх, и сделать выгодные ставки. -
Программа предназначена для формирования коммерческих предложений по наружной рекламе.
В качестве исходных данных выступает файл Excel со списком рекламных объектов.Список объектов должен содержать следующую информацию (в отдельных столбцах):
адрес рекламной конструкции (щита)
сторона рекламного щита или перетяжки (А, Б, В, и т.п.)
ссылки на фото и карту рекламной конструкции
(… -
Программа предназначена для формирования таблицы Excel для расчёта суммы оплаты за услуги ЖКХ (холодного и горячего водоснабжения)
В качестве исходных данных выступает таблица, в которой занесены показания счётчиков (расход горячей и холодной воды)
Макрос производит поиск клиентов в исходной таблице (по номеру лицевого счёта), и подставляет данные по этому клиенту в итоговую таблицу.
Вы… -
Программа позволяет в процессе ввода новых данных в таблицу Excel отслеживать наличие совпадений с записями из «черного списка», расположенного на отдельном листе.
Особенности данной программы:
поиск частичных совпадений (адреса могут совпадать лишь частично, при сравнении файмилий не учитываются 2 последних буквы, и т.д.)
можно изменить «точность» совпадения — в… -
Программа предназначена для создания маркировальных этикеток для идентификации груза
В качестве исходных данных используется таблица (на скриншоте) имеющая следующие поля:НАИМЕНОВАНИЕ ТОВАРА
КОД ТНВЭД
КОЛИЧЕСТВО
ЕД. ИЗМ.
ВЕС НЕТТО
ВЕС БРУТТО
МЕСТА
ТИП УПАКОВКИ
ОБЪЕМ
ТОРГОВАЯ МАРКА
ПРОИЗВОДИТЕЛЬ
ФОТО
ЗАВОДСКАЯ МАРКИРОВКА
МАРКИРОВКА
НОМЕР ЗАЯВКИ…
-
Программа позволяет выполнить сквитовку первой продажи и первой покупки в таблице сделокВ результате работы программы таблица сделок принимает вид, показанный на скриншоте.
Исходными данными выступает таблица сделок в таком формате:
Для проверки корректности работы программы она формирует лог-файл примерно такого содержания:
========= Обработка строки 1 ===================
Текущее… -
Надстройка позволяет одним щелчком мыши выполнить копирование выделенных строк в один из файлов, расположенных в специальной папке на сервере или локальном компьютере.
Надстройка при запуске добавляет несколько пунктов в контекстное меню ячейки (см. скриншот)
При закрытии (отключении) надстройки дополнительные пункты контекстного меню исчезают.
В коде указываются настройки программы:
‘… -
Надстройка PhoneNumbers предназначена для обработки номеров телефонов в таблице Excel, в выводом найденный (распознанных) номеров в отдельный столбец
Основное предназначение: Извлечение номеров телефонов из Excel файла.
Пример исходных данных и результата можно посмотреть в прикреплённом файле Excel (на первом листе — что есть изначально, на втором — то, что получается… -
Программа позволяет искать в выбранной папке изображения, основываясь на содержимом ячеек таблицы Excel, и производить вставку найденных изображений в соседние ячейки.Реализовано:
сжатие вставляемых изображений
поиск картинок в подпапках
установка выбранного пользователем размера для вставляемых изображений
отображение состояния обработки файла (прогресс-бар)
При вставке… -
Надстройка предназначена для формирования оглавления прайс-листов, расположенных на отдельных листах книги Excel.При запуске программа формирует панель инструментов:
Особенности программы:
группировка строк каждого прайс-листа
формирование обратных ссылок с прайс-листов на оглавление
-
Программа предназначена для импорта данных из одного файла Excel (проект разработки нефтяных месторождений) в другой файл (форма отчета).
Макрос выполнен в виде надстройки для Excel, добавляющей в меню приложения кнопку «Скопировать» для запуска формы.
На форме выбираются исходное и конечное поля, нажимается кнопка «Перенести данные», — и программа, сопоставляя столбцы двух файлов, производит… -
Программа предназначена для получения данных с сайта Национального рейтингового агенства.
Исходными данными является столбец с гиперссылками.
Результат выводится на отдельный лист.
Собираемые программой данные содержат следующую информацию:Суммарные брокерские операции
Совокупные обороты
Собственный Капитал
Прибыль
Обороты с облигациями
Обороты с муниципальными облигациями… -
Программа предназначена для переноса информации из файла формы в файл проекта.
После выбора и загрузки формы пользователь выбирает поля для переноса, и указывает, в какую позицию проекта необходимо поместить данные.
При необходимости осуществляется конвертация валют с учётом текущего курса доллара. -
Программа предназначена для еженедельного формирования плана проверок торговых точек.
Функции программы:
выборка из базы данных заданного числа случайных торговых точек, в соответствии с настройками для каждой группы
формирование таблицы (файл Excel) со списком выбранных объектов по шаблону
рассылка созданного файла (в архиве ZIP) по заданному списку адресов электронной…
-
Программа предназначена для формирования таблицы, содержащей имена файлов игр для сотовых телефонов.
В исходной таблице содержатся данные о всех моделях сотовых телефонов различных брендов.
Цель макроса — сформировать список имён файлов .jar для новой игры, дополнив его столбцами с производителем и моделью аппарата.
В этом уроке я покажу Вам самые популярные макросы в VBA Excel, которые вы сможете использовать для оптимизации своей работы. VBA — это язык программирования, который может использоваться для расширения возможностей MS Excel и других приложений MS Office. Это чрезвычайно полезно для пользователей MS Excel, поскольку VBA может использоваться для автоматизации вашей работы и значительно увеличить Вашу эффективность. В этой статье Вы познакомитесь с VBA и я вам покажу некоторые из наиболее полезных, готовых к использованию примеров VBA. Вы сможете использовать эти примеры для создания собственных скриптов, соответствующих Вашим потребностям.
Вам не нужен опыт программирования, чтобы воспользоваться информаций из этой статьи, но вы должны иметь базовые знания Excel. Если вы еще учитесь работать с Excel, я бы рекомендовал Вам прочитать статью 20 формул Excel, которые вам нeобходимо выучить сейчас, чтобы узнать больше о функциональных возможностях Excel.
Я подготовил для вас несколько самых полезных примеров VBA Excel с большой функциональностью, которую вы сможете использовать для оптимизации своей работы. Чтобы их использовать, вам необходимо записать их в файл. Следующий параграф посвящен установке макроса Excel. Пропустите эту часть, если вы уже знакомы с этим.
Table of Contents
Как включить макросы в Excel
В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!
1. Копирование данных из одного файла в другой.
Очень полезный макрос, поскольку он показывает, как скопировать ряд данных изнутри vba и как создать и назвать новую книгу. Вы можете изменить этот макрос в соответствии с вашими собственными требованиями:
Sub CopyFiletoAnotherWorkbook() Sheets("Example 1").Range("B4:C15").Copy Workbooks.Add ActiveSheet.Paste Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:TempMyNewBook.xlsx" Application.DisplayAlerts = True End Sub
2. Отображение скрытых строк
Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:
Sub ShowHiddenRows() Columns.EntireColumn.Hidden = False Rows.EntireRow.Hidden = False End Sub
3. Удаление пустых строк и столбов
Пустые строки в Excel — может быть проблемой для обработки данных. Вот как избавиться от них:
Sub DeleteEmptyRowsAndColumns() Dim MyRange As Range Dim iCounter As Long Set MyRange = ActiveSheet.UsedRange For iCounter = MyRange.Rows.Count To 1 Step -1 If Application.CountA(Rows(iCounter).EntireRow) = 0 Then Rows(iCounter).Delete End If Next iCounter For iCounter = MyRange.Columns.Count To 1 Step -1 If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then Columns(iCounter).Delete End If Next iCounter End Sub
4. Нахождение пустых ячеек
Sub FindEmptyCell() ActiveCell.Offset(1, 0).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
#### 5. Заполнение пустых ячеек
Как упоминалось ранее, пустые ячейки препятствуют обработке данных и созданию сводных таблиц. Вот один примерный код, который заменяет все пустые ячейки на 0. Этот макрос имеет очень большое приложение, потому что Вы можете использовать его для поиска и замены результатов N/A, а также других символов, таких как точки, запятые или повторяющиеся значения:
Sub FindAndReplace() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Len(MyCell.Value) = 0 Then MyCell = 0 End If Next MyCell End Sub
#### 6. Сортировка данных
Следующий макрос сортирует по возрастанию все числа из столбца активной ячейки. Просто дважды нажмите любую ячейку из столбца, который вы хотите отсортировать.
NB: Здесь нам нужно поставить этот код в Sheet1 (папка Microsoft Excel Objects), а не в Module1 (папка Modules):
Private Sub Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel As Boolean) Dim LastRow As Long LastRow = Cells (Rows.Count, 1) .End (xlUp) .Row Rows ("6:" & LastRow) .Sort _ Key1: = Cells (6, ActiveCell.Column), _ Order1: = xlAscending End Sub
#### 7. Удаление пустых пространств
Иногда данные в книге содержат дополнительные пробелы (whitespace charachters), которые могут мешать анализу данных и коррумпировать формулы. Вот один макрос, который удалит все пробелы из предварительно выбранного диапазона ячеек:
Sub TrimTheSpaces() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Not IsEmpty(MyCell) Then MyCell = Trim(MyCell) End If Next MyCell End Sub
#### 8. Выделение дубликатов цветом
Иногда в нескольких столбцах, которые мы хотели бы осветить, есть повторяющиеся значения. Этот макрос делает именно это:
Sub HighlightDuplicates() Dim MyRange As Range Dim MyCell As Range Set MyRange = Selection For Each MyCell In MyRange If WorksheetFunction.CountIf(MyRange, MyCell.Value) > 1 Then MyCell.Interior.ColorIndex = 36 End If Next MyCell End Sub
#### 9. Выделение десяти самых высоких чисел
Этот код будет отображать десять самых высоких чисел из набора ячеек:
Sub TopTen() Selection.FormatConditions.AddTop10 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .TopBottom = xlTop10Top .Rank = 10 .Percent = False End With With Selection.FormatConditions(1).Font .Color = -16752384 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13561798 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub
Вы можете легко настроить код, чтобы выделить различное количество чисел.
#### 10. Выделение данных больших чем данные число
Когда вы запустите этот код, появится окно. Вам надо написать число, которое вы хотите сравнить с выбранными ячейками.
Sub HighlightGreaterThanValues() Dim i As Integer i = InputBox("Enter Greater Than Value", "Enter Value") Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:=i Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .Font.Color = RGB(0, 0, 0) .Interior.Color = RGB(31, 218, 154) End With End Sub
Вы тоже можете настроить этот код, чтобы выделить более низкие чисел.
#### 11. Выделение ячеек комментариями
Простой макрос, который выделяет все ячейки, содержащие комментарии:
Sub HighlightCommentCells() Selection.SpecialCells(xlCellTypeComments).Select Selection.Style= "Note" End Sub
#### 12. Выделение ячеек со словами с ошибками
Это очень полезно, когда вы работаете с функциями, которые принимают строки, однако кто-то ввел строку с ошибкой, и ваши формулы не работают. Вот как решить эту проблему:
Sub ColorMispelledCells() For Each cl In ActiveSheet.UsedRange If Not Application.CheckSpelling(Word:=cl.Text) Then _ cl.Interior.ColorIndex = 28 Next cl End Sub
13. Создание сводной таблицы
Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:
Sub PivotTableForExcel2007() Dim SourceRange As Range Set SourceRange = Sheets("Sheet1").Range("A3:N86") ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SourceRange, _ Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="", _ TableName:="", _ DefaultVersion:=xlPivotTableVersion12 End Sub
14. Отправка активного файла по электронной почте
Мой любимый код VBA. Он позволяет вам прикреплять и отправлять файл, с которым вы работаете, с предопределенным адресом электронной почты, заголовком сообщения и телом сообщения! Сначала Вам нужно сделать референцию в Excel на Microsoft Outlook (в редакторе Excel VBA, нажмите tools => references и выберите Microsoft Outlook).
Sub SendFIleAsAttachment() Dim OLApp As Outlook.Application Dim OLMail As Object Set OLApp = New Outlook.Application Set OLMail = OLApp.CreateItem(0) OLApp.Session.Logon With OLMail .To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com" .CC = "" .BCC = "" .Subject = "This is the Subject line" .Body = "Hi there" .Attachments.Add ActiveWorkbook.FullName .Display End With Set OLMail = Nothing Set OLApp = Nothing End Sub
15. Вставка всех графиков Excel в презентацию PowerPoint
Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:
Sub SendExcelFiguresToPowerPoint() Dim PP As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim i As Integer Sheets("Slide Data").Select If ActiveSheet.ChartObjects.Count < 1 Then MsgBox "No charts existing the active sheet" Exit Sub End If Set PP = New PowerPoint.Application Set PPPres = PP.Presentations.Add PP.Visible = True For i = 1 To ActiveSheet.ChartObjects.Count ActiveSheet.ChartObjects(i).Chart.CopyPicture _ Size:=xlScreen, Format:=xlPicture Application.Wait (Now + TimeValue("0:00:1")) ppSlideCount = PPPres.Slides.Count Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank) PPSlide.Select PPSlide.Shapes.Paste.Select PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True Next i Set PPSlide = Nothing Set PPPres = Nothing Set PP = Nothing End Sub
16. Вставка таблицы Excel в MS Word
Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:
Sub ExcelTableInWord() Dim MyRange As Excel.Range Dim wd As Word.Application Dim wdDoc As Word.Document Dim WdRange As Word.Range Sheets("Revenue Table").Range("B4:F10").Cop Set wd = New Word.Application Set wdDoc = wd.Documents.Open _ (ThisWorkbook.Path & "" & "PasteTable.docx") wd.Visible = True Set WdRange = wdDoc.Bookmarks("DataTableHere").Rangе On Error Resume Next WdRange.Tables(1).Delete WdRange.Paste WdRange.Tables(1).Columns.SetWidth _ (MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth wdDoc.Bookmarks.Add "DataTableHere", WdRange Set wd = Nothing Set wdDoc = Nothing Set WdRange = Nothing End Sub
17. Извлечение слов из текста
Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():
Function FindWord(Source As String, Position As Integer) As String On Error Resume Next FindWord = Split(WorksheetFunction.Trim(Source), " ")(Position - 1) On Error GoTo 0 End Function Function FindWordRev(Source As String, Position As Integer) As String Dim Arr() As String Arr = VBA.Split(WorksheetFunction.Trim(Source), " ") On Error Resume Next FindWordRev = Arr(UBound(Arr) - Position + 1) On Error GoTo 0 End Function
Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.
18. Защита данных в MS Excel
Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:
Sub ProtectSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Protect Password:="1234" Next ws End Sub
Поздравления! Поскольку вы все еще читаете это, вы действительно заинтересованы в изучении VBA. Как вы уже сами видели, язык программирования VBA чрезвычайно полезен и может сэкономить нам много времени. Надеюсь, вы нашли эту информацию полезной и использовали ее, чтобы стать мастером MS Excel, VBA и компьютерных наук в целом.
© 2018 Атанас Йонков
Литература:
1. ExcelChamps.com: Top 100 Useful Excel Macro [VBA] Codes Examples.
2. Michael Alexander, John Walkenbach (2012). 101 Ready-To-Use Excel Macros.
3. BG Excel.info: 14 ready-to-use Macros for Excel.
Полезные макросы Excel для автоматизации рутинной работы с примерами применения для разных задач.
Примеры макросов для автоматизации работы
Макросы для фильтра сводной таблицы в Excel.
Как автоматизировать фильтр в сводных таблицах с помощью макроса? Исходные коды макросов для фильтрации и скрытия столбцов в сводной таблице.
Макрос для создания сводной таблицы в Excel.
Как автоматически сгенерировать сводную таблицу с помощью макроса? Исходный код VBA для создания и настройки сводных таблиц на основе исходных данных.
Макросы для изменения формата ячеек в таблице Excel.
Как форматировать ячейки таблицы макросом? Изменение цвета шрифта, заливки и линий границ, выравнивание. Автоматическая настройка ширины столбцов и высоты строк по содержимому с помощью VBA-макроса.
Макрос для копирования и переименования листов Excel.
Как одновременно копировать и переименовывать большое количество листов одним кликом мышкой? Исходный код макроса, который умеет одновременно скопировать и переименовать любое количество листов.
Введение
Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.
Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых нужных нам действий, которые нам не хочется выполнять вручную.
В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.
Способ 1. Создание макросов в редакторе Visual Basic
Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.
- В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
- В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)
:
К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:
Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:
- Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:
- Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):
- Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)
Обычный макрос, введенный в стандартный модуль выглядит примерно так:
Давайте разберем приведенный выше в качестве примера макрос Zamena:
- Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
- Любой макрос должен заканчиваться оператором End Sub.
- Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).
С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно…
Способ 2. Запись макросов макрорекордером
Макрорекордер — это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:
- Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
- Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
- Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.
Чтобы включить запись необходимо:
- в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
- в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)
Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:
- Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
- Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
- Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
- Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
- Личная книга макросов — это специальная книга Excel с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.
После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).
Запуск и редактирование макросов
Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):
- Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
- Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
- Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:
Кнопка на панели инструментов в Excel 2003 и старше
Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):
Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и новее
Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):
Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:
Кнопка на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:
- В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
- В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)
Выберите объект Кнопка (Button):
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.
Создание пользовательских функций на VBA
Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).
Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:
Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):
После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:
Создание таблицы с помощью кода VBA Excel. Создание умной и обычной пользовательской таблицы. Указание стиля умной таблицы, добавление строки итогов. Примеры.
Создание и удаление умной таблицы
Создание умной таблицы
Создается умная таблица Excel с помощью следующего кода:
ActiveSheet.ListObjects.Add(xlSrcRange, Range(«$A$1:$L$15»), , xlNo).Name _ = «МояТаблица1» |
В данном примере:
ActiveSheet — лист, на котором создается таблица, может быть любой лист рабочей книги Excel.
Range(«$A$1:$L$15») — диапазон, который преобразуется в таблицу. Можно использовать и такую форму: Range(Cells(1, 1), Cells(15, 12)), где индексы строк и столбцов можно заменить переменными.
xlNo — указывает, что первая строка выбранного диапазона не содержит заголовки столбцов (граф) будущей таблицы, и их необходимо добавить. В этом случае будет добавлена дополнительная строка с наименованиями столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д., которые в дальнейшем можно переименовать (количество строк в таблице, включая строку заголовков, получится на одну больше, чем в указанном диапазоне). Если в диапазоне уже содержатся заголовки столбцов будущей таблицы, то следует указать вместо xlNo значение xlYes. В этом случае первая строка указанного диапазона будет преобразована в строку заголовков, а если она будет не заполнена, то добавятся названия столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д. (количество строк в таблице, включая строку заголовков, будет то же, что и в указанном диапазоне).
МояТаблица1 — имя, присваиваемое создаваемой таблице. Имя должно быть без пробелов: при указании в коде VBA названия таблицы с пробелами, во время его выполнения Excel заменит пробелы знаками подчеркивания (по крайней мере, так происходит в Excel 2016).
Таблица будет создана со стилем по умолчанию (TableStyleMedium2 в Excel 2016).
Стиль умной таблицы
Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:
ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «TableStyleMedium15» |
Свойство TableStyle может принимать следующие значения:
- TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
- TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
- TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).
Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.
Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:
ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «» |
Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».
Добавление строки итогов
Строка итогов умной таблицы добавляется следующим образом:
ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = True |
Удаляется строка итогов умной таблицы так:
ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = False |
Удаление умной таблицы
Удалить умную таблицу очень просто:
ActiveSheet.ListObjects(«МояТаблица1»).Delete |
Создание пользовательской таблицы
Мне не приходилось на практике с помощью VBA Excel создавать умные таблицы, в отличие от пользовательских таблиц, которые использовались для улучшения восприятия различных отчетов или сгенерированных документов.
Для создания такой таблицы необходимо:
- определить диапазон, если он заранее не известен (иногда для этого может понадобиться определить номер последней заполненной строки);
- добавить границы ячеек;
- отформатировать строку заголовков;
- добавить строку итогов, если она необходима.
Подробнее о создании пользовательской таблицы в Примере 2.
Примеры создания таблиц
Задание для примеров
Набор данных для примеров создания таблиц
Допустим, на лист Excel переданы данные для заполнения табличной части товарного чека со следующими условиями:
- в табличной части 5 граф: № п/п, Наименование, Количество, Цена и Сумма;
- сколько наименований добавил пользователь неизвестно.
Нам необходимо:
- определить количество строк;
- добавить строку заголовков;
- отобразить сетку (границы ячеек);
- добавить строку итогов.
Таблицу будем оформлять двумя способами: путем создания умной и пользовательской таблиц.
Пример 1 — умная таблица
Упаковываем набор данных из задания в умную таблицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub test1() ‘Объявляем переменную для присвоения ей количества строк Dim a As Long ‘Определяем количество строк a = Cells(1, 1).CurrentRegion.Rows.Count ‘Создаем умную таблицу с добавлением строки заголовков ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1),Cells(a, 5)), , xlNo).Name _ = «ТоварныйЧек1» ‘Изменяем названия граф Cells(1, 1) = «№ п/п» Cells(1, 2) = «Наименование» Cells(1, 3) = «Количество» Cells(1, 4) = «Цена» Cells(1, 5) = «Сумма» ‘Добавляем строку итогов ActiveSheet.ListObjects(«ТоварныйЧек1»).ShowTotals = True ‘Стиль оставляем по умолчанию End Sub |
Результат выполнения кода Примера 1 получится такой:
Умная таблица из заданного набора данных
Пример 2 — «обычная» таблица
Упаковываем набор данных из задания в пользовательскую таблицу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Sub test2() ‘Объявляем переменную для присвоения ей количества строк Dim a As Long ‘Определяем количество строк a = Cells(1, 1).CurrentRegion.Rows.Count ‘Добавляем строку заголовков Cells(1, 1).EntireRow.Insert ‘Указываем названия граф Cells(1, 1) = «№ п/п» Cells(1, 2) = «Наименование» Cells(1, 3) = «Количество» Cells(1, 4) = «Цена» Cells(1, 5) = «Сумма» ‘Добавляем сетку Range(Cells(1, 1), Cells(a + 1, 5)).Borders.LineStyle = True ‘Добавляем строку итогов Cells(a + 2, 4) = «Итого:» With Cells(a + 2, 5) .FormulaR1C1 = «=SUM(R[-« & a & «]C:R[-1]C)» .Borders.LineStyle = True .Font.Bold = True End With ‘Выделяем заголовки жирным шрифтом и ‘применяем автоподстройку ширины столбцов With Range(Cells(1, 1), Cells(1, 5)) .Font.Bold = True .EntireColumn.AutoFit End With End Sub |
Результат выполнения кода Примера 2 получится такой:
Пользовательская таблица из заданного набора данных
Если решите поэкспериментировать с моим кодом, добавьте любые данные в пять колонок на активном листе Excel, количество строк может быть любым, в пятой графе должны быть числа.
О работе с умной таблицей (обращение к ячейкам, строкам и столбцам; добавление и удаление строк и столбцов) рассказано в статье VBA Excel. Работа с умной таблицей