Макрос для excel отчет

  • Надстройка PastePictures для MS Excel: общие сведения

    Предназначение программы: вставка изображений в таблицу Excel, поиск картинок в папке или в Google, экспорт картинок из таблицы в папку.
    Основные функции программы:

    вставка фото из папки (поиск по имени файла)
    вставка картинок по ссылкам из таблицы
    поиск изображений в гугл по данным с листа Excel
    экспорт изображений с листа в файлы…

  • Логотип надстройки Unification

    Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет легко автоматизировать обработку прайс-листов.
    Вспомните ситуацию: поставщики в очередной раз прислали свои прайс-листы в Excel — конечно, в совершенно разных форматах — и вам нужно объединить данные из всех этих файлов в одну таблицу. А составители этих таблиц будто специально хотели усложнить вам жизнь…

  • Сравнение столбцов в Excel, и подстановка значений в таблицу

    Программа предназначена для сравнения и подстановки значений в таблицах Excel.
    Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
    и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
    надстройка «Lookup» поможет сделать это нажатием одной кнопки.
     
    То же самое можно сделать при помощи формулы =ВПР(), но:

    формулы…

  • Скриншот программы создания этикеток, наклеек, ценников и квитанций


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

    При помощи этой программы вы можете:

    распечатать ценники на товар, взяв данные из прайс-листа

    сформировать этикетки и наклейки для заданных строк вашей таблицы

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

  • Скриншот программы формирования договоров купли-продажи


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

  • Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.
    В прикреплённом файле, на первом листе («исходные данные»), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации)
    Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные…

  • Скриншот надстройки поиска по всем листам Excel


    Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист.
     
    При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов:

    В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»:

    Надстройка SearchText является расширенной версией надстройки для…

  • Скриншот программы сравнения прайс-листов Excel


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

    ВНИМАНИЕ: Недавно разработана многофункциональная программа для обработки прайс-листов

    Новая программа объединения и обработки прайс-листов доступна на сайте для скачивания и тестирования на различных наборах прайс-листов.

    Исходными данными для программы являются:

    ваш прайс…

  • К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым:
    (количество файлов, и количество строк данных в каждом файле не ограничено)
    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
    А надо из всего этого…

  • Главное меню программы по работе с базой данных «Преподаватели»


    База данных «Преподаватели» предназначена для автоматизации работы администрации учебных заведений.

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

    Эта база данных представляюет собой урезанную и немного изменённую версию программы АИСС СПК.

    Программа обеспечивает:

    Хранение полной…

  • Скриншот результатов поиска с выводом на отдельный лист


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

    Надстройка SearchExcel является упрощённой версией надстройки для поиска на всех листах книги Excel
    Смотрите также надстройку для…

  • Создание списка файлов из папки со значениями ячеек из этих файлов

    Макрос FilenamesWithValues предназначен для получения списка файлов Excel из заданной папки, и загрузки значений из каждого найденного файла.
    В отдельной ячейке задаётся путь к папке, которая будет просмотрена в поисках файлов Excel.
    При формировании списка файлов проставляются гиперссылки на найденные файлы, указывается дата создания файла.
    Из каждого файла загружаются значения с…

  • Форма редактирования и просмотра заказа


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

    Основные функции программы:

    создание (заполнение) новых заказов

    редактирование существующих заказов

    объединение нескольких заказов в один

    формирование заявки на продукцию на основании данных их сформированных заказов

    Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент…

  • АИСС "Абитуриент" - форма ввода данных абитуриента


    Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов.

    АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.

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

    Программа обеспечивает:

    Хранение полной…

  • Результат объединения данных из файлов Excel


    Программа предназначена для загрузки списка товаров из актов о приеме-передаче основных средств.
    Поддерживаются акты по формам № ОС-3.1 и № ОС-3.3, возможно добавить поддержку актов других форм (в формате Excel).
    При запуске макроса, выводится диалоговое окно выбора папки, после чего, в выбранной папке, производится поиск всех файлов Excel.
    Для каждого из найденных файлов Excel, программа…

  • Поиск трасс и просмотр ресурсов оборудования


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

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

     

    Особенность программы — возможность учёта и администрирования узлов связи с нестандартными…

  • Форма ввода данных о новом пациенте

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

     

  • Панель инструментов программы обработки телефонных номеров


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

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

    разносить номера из ячеек по разным столбцам или строкам…

  • Форма подбора соответствия для модели ноутбука


    Программа предназначена для формирования прайс-листов на ноутбуки с соответствии с требованиями интернет-каталога Onliner.by

    Основные функции программы:

    (учитываются цены фирм-конкурентов, цены onliner.by и надбавка фирмы)

    загрузка каталога ноутбуков (названия, характеристики, цены) с сайта onliner.by в файл Excel, и обновление этого каталога

    назначение соответствий моделей…

  • Составление расписания занятий в Excel


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

  • Скриншот формы поиска файлов в заданной папке


    Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel.
    Автор: VictorM

    Особенности надстройки:

    задаваемая пользователем глубина поиска в подпапках

    простановка гиперссылок на листе Excel на найденные файлы

    вывод дополнительных характеристик файла

    (размер файла, дата создания файла, полный путь)

    изменяемая маска поиска (поиск по части имени файла, по…

  • Результат формирования задания на производство

    Программа предназначена для формирования заданий на производство.
    Исходными данными выступают таблицы Excel и файлы XML.
    При конвертации таблиц происходит обработка данных и перестановка столбцов.
    При запуске программа формирует панель инструментов с 6 кнопками — для обработки файлов различной структуры.

  • Вид объединённого прайс-листа автозапчастей


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

    ВНИМАНИЕ: Описанная в данной статье программа послужила прототипом для новой, многофункциональной программы, где пользователь сам может настраивать обработку прайс-листов

    Новая программа объединения и обработки прайс-листов доступна на сайте для…

  • Результат обработки объявлений - таблица на листе Excel

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

  • Скриншот заголовка таблицы заказов из интернет-магазина, загруженных из писем в Outlook


    Программа анализирует поступившие заказы с интернет-магазина (письма в программе Outlook), извлекает необходимые данные из писем (в формате HTML), и формирует сводную таблицу заказов
     
    Файл программы состоит из 2 листов — на первом листе находятся кнопки запуска, на втором — шаблон создаваемой сводной таблицы заказов.
     

    Принцип работы программы:

    при нажатии зеленой кнопки,…

  • Программное формирование оглавления Книги заявок


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

    Цели программы:

    автоматизация составления и редактирования заявок

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

    формирование отчётов по категориям и типам заявок

    стандартизация печатной формы заявок

    разграничение доступа на работу с базой данных заявок

     …

  • Получение длительности медиафайла формулой Excel


    Узнать продолжительность (время) звучания аудиофайла (MP3, WAV и т.д.), или длительность видеофайла (видеоролика) из Excel совсем несложно.
    Используйте функцию ПродолжительностьМедиафайла:
    (функцию можно использовать как в макросах, так и на листе Excel)
    Sub Пример_Использования_Функции_ПродолжительностьМедиафайла()
    Путь = «E:MusicMODERN_TALKING With_a_little_love.mp3″…

  • Данные с сайта superjob.ru, загужаемые в таблицу Excel


    Программа предназначена для импорта данных о соискателях с сайта superjob.ru
    В качестве исходных данных для макроса, используется ссылка на результат поиска на сайте superjob.ru
    (которую можно получить, забив искомый текст в строке поиска сайта, и скопировав URL страницы результатов поиска из адресной строки браузера).
    Во время выполнения кода, происходит авторизация на сайте путем…

  • Формирование отчётов по предприятиям нефтегазодобывающей промышленности


    Программа предназначена для сбора данных из отчётов нефтедобывающих компаний.
     
    Исходными данными выступают файлы оперативной отчётности следующих типов:

    Добыча

    Переработка

    Сбыт

    Сервис

    Анализ

    На распределение

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

  • Форма выбора мероприятий для формирования отчёта


    Программа предназначена для вывода отчёта по мероприятиям налоговой инспекции.
     

    Исходные данные для обработки расположены на других листах того же файла Excel: 

    перечень мероприятий налогового контроля, проведенных в отношении контрагентов

    поручения об истребовании документов (информации)

    запросы в кредитные организации о предоставлении сведений по операциям на счетах…

  • Скриншот программы загрузки номеров телефонов с сайта объявлений abw.by


    Программа собирает в таблицу Excel номера телефонов из объявлений на сайте abw.by
    В ячейке листа Excel указывается количество дней, за которые будут обрабатываться объявления с сайта.
    (если указано 0 дней — обрабатываются только объявления за сегодняшнюю дату, если 1 день — сегодняшние и вчерашние, и т.д.
    Количество дней неограничено — влияет только на время загрузки данных)
    В каждом…

  • Вид программно создаваемой сводной таблицы и диаграммы


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

    В качестве исходных данных выступает таблица со статистикой доступа в интернет — сформированная программой создания отчётов по статистике

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

    При…

  • Скриншот таблицы Excel со списком папок и подпапок


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

  • Форма ввода записей в базу данных в Excel


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

    Программа представляет собой шаблон Excel для создания, сортировки и сведения в общую таблицу, заказов различных категорий.
    (категории можно менять вручную на отдельном листе).
    Сотрудник регистрирует своё имя, выбирая его из выпадающего списка, а после выбора ФИО, в соседние поля подтягивается…

  • Отчёт по ликвидности портфелей ценных бумаг


    Программа предназначена для обработки отчётов управления по сделкам с ценными бумагами

    Основные функции программы:

    Создание новых отчётов управления (за следующий квартал) на основании текущих отчётов

    Внесение изменений и дополнений в существующие отчёты

    Формирование сводной таблицы по вкладам для оценки роста, а также коэффициентов ликвидности и версификации вкладов

    Обработка…

  • Промежуточные результаты отработки котировок

    Результат загрузки котировок из внешних файлов

    Программа позволяет загружать котировки различных валют из файлов формата .HTM, и анализировать их при различных параметрах анализа.
    Все котировки разбиваются на отдельные блоки (временные диапазоны для разбивки задаются на форме настроек), и анализ производится по каждому блоку в отдельности.
    Есть возможность исключить из расчётов данные за пятницу.
    Изменение параметров вычисления значений BS…

  • Пример обрабатываемого текстового файла, содержащего данные о компьютере


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

    Выбор папки с данными по всем компьютерам…

  • Форма выбора параметров запроса статистики


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

    В качестве исходных данных программа принимает:

    логин абонента

    дату начала и окончания периода сбора статистики

     

    Особенности программы:

    формирование отчётов по всему трафику, или только по оплачиваемому

    создание листа итогов с диаграммой (сразу видно, с какого сайта был…

  • Скриншот формируемого отчёта с характеристиками серверов


    Программа предназначена для формирования отчёта по серверам компании (список технических характеристик, IP адресов, установленного программного обеспечения)
    В качестве исходных данных для программы имеется выгрузка из Help Desk системы Acme в формате XLS, но этот отчёт, хоть и содержит все необходимые данные, крайне неудобен для анализа и дальнейшей обработки:

    Программа производит поиск…

  • Скриншот программы поиска и объединения файлов


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

  • Процесс анализа рисков инвестиционных проектов


    Программа предназначена для анализа ожидаемой доходности различных портфелей

    (рассматриваются всевозможные комбинации проектов)

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

    Методом Монте-Карло формируются массивы значений (по одному массиву для…

  • Настройка шаблона писем для рассылки детализации звонков


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

  • Запуск формирования списков игр

    Таблица "Полные данные ставок"

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

  • Скриншот листа коммерческого предложения - описание, фото и карта рекламной конструкции


    Программа предназначена для формирования коммерческих предложений по наружной рекламе.
    В качестве исходных данных выступает файл Excel со списком рекламных объектов.

    Список объектов должен содержать следующую информацию (в отдельных столбцах):

    адрес рекламной конструкции (щита)

    сторона рекламного щита или перетяжки (А, Б, В, и т.п.)

    ссылки на фото и карту рекламной конструкции
    (…

  • Форма вывода результатов проверки на совпадения

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

    Особенности данной программы:

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

  • Пример созданного оглавления прайс-листов отелей


    Надстройка предназначена для формирования оглавления прайс-листов, расположенных на отдельных листах книги Excel.

    При запуске программа формирует панель инструментов:

    Особенности программы:

    группировка строк каждого прайс-листа

    формирование обратных ссылок с прайс-листов на оглавление

     


Download Article


Download Article

This wikiHow teaches you how to automate the reporting of data in Microsoft Excel. For external data, this wikiHow will teach you how to query and create reports from any external data source (MySQL, Postgres, Oracle, etc) from within your worksheet using Excel plugins that link your worksheet to external data sources.

For data already stored in an Excel worksheet, we will use macros to build reports and export them in a variety of file types with the press of one key. Luckily, Excel comes with a built-in step recorder which means you will not have to code the macros yourself.

  1. Image titled Automate Reports in Excel Step 1

    1

    If the data you need to report on is already stored, updated, and maintained in Excel, you can automate reporting workflows using Macros. Macros are a built in function that allow you to automate complex and repetitive tasks.

  2. Image titled Automate Reports in Excel Step 2

    2

    Open Excel. Double-click (or click if you’re on a Mac) the Excel app icon, which resembles a white «X» on a green background, then click Blank Workbook on the templates page.

    • On a Mac, you may have to click File and then click New Blank Workbook in the resulting drop-down menu.
    • If you already have an Excel report that you want to automate, you’ll instead double-click the report’s file to open it in Excel.

    Advertisement

  3. Image titled Automate Reports in Excel Step 3

    3

    Enter your spreadsheet’s data if necessary. If you haven’t added the column labels and numbers for which you want to automate results, do so before proceeding.

  4. Image titled Automate Reports in Excel Step 4

    4

    Enable the Developer tab. By default, the Developer tab doesn’t show up at the top of the Excel window. You can enable it by doing the following depending on your operating system:

    • Windows — Click File, click Options, click Customize Ribbon on the left side of the window, check the «Developer» box in the lower-right side of the window (you may first have to scroll down), and click OK.[1]
    • Mac — Click Excel, click Preferences…, click Ribbon & Toolbar, check the «Developer» box in the «Main Tabs» list, and click Save.[2]
  5. Image titled Automate Reports in Excel Step 5

    5

    Click Developer. This tab should now be at the top of the Excel window. Doing so brings up a toolbar at the top of the Excel window.

  6. Image titled Automate Reports in Excel Step 6

    6

    Click Record Macro. It’s in the toolbar. A pop-up window will appear.

  7. Image titled Automate Reports in Excel Step 7

    7

    Enter a name for the macro. In the «Macro name» text box, type in the name for your macro. This will help you identify the macro later.

    • For example, if you’re creating a macro that will make a chart out of your available data, you might name it «Chart1» or similar.
  8. Image titled Automate Reports in Excel Step 8

    8

    Create a shortcut key combination for the macro. Press the Shift key along with another key (e.g., the T key) to create the keyboard shortcut. This is what you’ll use to run your macro later.

    • On a Mac, the shortcut key combination will end up being Option+ Command and your key (e.g., Option+ Command+T).
  9. Image titled Automate Reports in Excel Step 9

    9

    Store the macro in the current Excel document. Click the «Store macro in» drop-down box, then click This Workbook to ensure that the macro will be available for anyone who opens the workbook.

    • You’ll have to save the Excel file in a special format for the macro to be saved.
  10. Image titled Automate Reports in Excel Step 10

    10

    Click OK. It’s at the bottom of the window. Doing so will save your macro settings and place you in record mode. Any steps you take from now until you stop the recording will be recorded.

  11. Image titled Automate Reports in Excel Step 11

    11

    Perform the steps that you want to automate. Excel will track every click, keystroke, and formatting option you enter and add them to the macro’s list.

    • For example, to select data and create a chart out of it, you would highlight your data, click Insert at the top of the Excel window, click a chart type, click the chart format that you want to use, and edit the chart as needed.
    • If you wanted to use the macro to add values from cells A1 through A12, you would click an empty cell, type in =SUM(A1:A12), and press Enter.
  12. Image titled Automate Reports in Excel Step 12

    12

    Click Stop Recording. It’s in the Developer tab’s toolbar. This will stop your recording and save any steps you took during the recording as an individual macro.

  13. Image titled Automate Reports in Excel Step 13

    13

    Save your Excel sheet as a macro-enabled file. Click File, click Save As, and change the file format to xlsm instead of xls. You can then enter a file name, select a file location, and click Save.

    • If you don’t do this, the macro won’t be saved as part of the spreadsheet, meaning that other people on different computers won’t be able to use your macro if you send the workbook to them.
  14. Image titled Automate Reports in Excel Step 14

    14

    Run your macro. Press the key combination which you created as part of the macro to do so. You should see your spreadsheet automate according to your macro’s steps.

    • You can also run a macro by clicking Macros in the Developer tab, selecting your macro’s name, and clicking Run.
  15. Advertisement

  1. Image titled Automate Reports in Excel Step 15

    1

    Download Kloudio’s Excel plugin from Microsoft AppSource. This will allow you to create a persistent connection between an external database or data source and your workbook. This plugin also works with Google Sheets.

  2. Image titled Automate Reports in Excel Step 16

    2

    Create a connection between your worksheet and your external data source by clicking the + button on the Kloudio portal. Type in the details of your database (database type, credentials) and select any security/encryption options if working with confidential or company data.

  3. Image titled Automate Reports in Excel Step 17

    3

    Once you’ve created a connection between your worksheet and your database, you will be able to query and build reports from external data without leaving Excel. Create your custom reports from the Kloudio portal and then select them from the drop-down menu in Excel. You can then apply any additional filters and choose the frequency that the report will refresh (so you can have your sales spreadsheet update automatically every week, day, or even hour.)

  4. Image titled Automate Reports in Excel Step 18

    4

    In addition, you can also input data into your connected worksheet and have the data update your external data source. Create an upload template from the Kloudio portal and you will be able to manually or automatically upload changes in your spreadsheet to your external data source.

  5. Advertisement

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Video

  • Only download Excel plugins from Microsoft AppSource, unless you trust the third party provider.

  • Macros can be used for anything from simple tasks (e.g., adding values or creating a chart) to complex ones (e.g., calculating your cell’s values, creating a chart from the results, labeling the chart, and printing the result).

  • When opening a spreadsheet with your macro included, you may have to click Enable Content in a yellow banner at the top of the window before you can use the macro.

Thanks for submitting a tip for review!

Advertisement

  • Macros can be used maliciously (e.g., to delete files on your computer). Don’t run macros from untrustworthy sources.

  • Macros will implement literally every step you make while recording. Make sure that you don’t accidentally enter the incorrect value, open a program you don’t want to use, or delete a file.

Advertisement

About This Article

Article SummaryX

1. Enable the Developer tab.
2. Click the Developer tab.
3. Click Record Macro.
4. Create a shortcut key.
5. Store the content in the current workbook.
6. Click OK.
7. Perform the steps you want to automate.
8. Click Stop Recording.
9. Use the shortcut key to run the same steps.

Did this summary help you?

Thanks to all authors for creating a page that has been read 544,075 times.

Is this article up to date?


Загрузить PDF


Загрузить PDF

Из этой статьи вы узнаете, как в Microsoft Excel автоматизировать создание отчетов о данных. Здесь описывается, как в таблице Excel запросить данные из внешнего источника (MySQL, Postgres, Oracle и так далее) и создать отчет с помощью специального плагина, который свяжет таблицу Excel с внешними источниками данных.

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

  1. Изображение с названием Automate Reports in Excel Step 1

    1

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

  2. Изображение с названием Automate Reports in Excel Step 2

    2

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

    • На компьютере Mac вам, возможно, придется нажать «Файл» > «Пустая книга».
    • Если у вас уже есть отчет Excel, который нужно автоматизировать, дважды щелкните по файлу отчета, чтобы открыть его в Excel.
  3. Изображение с названием Automate Reports in Excel Step 3

    3

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

  4. Изображение с названием Automate Reports in Excel Step 4

    4

    Активируйте меню Разработчик. По умолчанию это меню не отображается в верхней части окна Excel. Чтобы включить меню «Разработчик»:

    • Windows — нажмите «Файл» > «Параметры» > «Настроить ленту» (на левой панели), установите флажок у «Разработчик» в нижнем правом углу (если вы не видите эту опцию, прокрутите страницу вниз), а затем нажмите «ОК».[1]
    • Mac — нажмите «Excel» > «Параметры» > «Лента и панель инструментов», установите флажок у «Разработчик» в списке «Основные», а затем нажмите «Сохранить».[2]
  5. Изображение с названием Automate Reports in Excel Step 5

    5

    Нажмите Разработчик. Вы найдете эту вкладку вверху окна Excel. Откроется панель инструментов «Разработчик».

  6. Изображение с названием Automate Reports in Excel Step 6

    6

    Щелкните по Запись макроса. Это опция на панели инструментов. Появится всплывающее окно.

  7. Изображение с названием Automate Reports in Excel Step 7

    7

    Введите имя макроса. Сделайте это в текстовом поле «Имя макроса». Так впоследствии вам будет проще определить, что это за макрос.

    • Например, если макрос будет строить график на основе доступных данных, назовите его «График1» или как-то аналогично.
  8. Изображение с названием Automate Reports in Excel Step 8

    8

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

    • На компьютере Mac сочетанием клавиш будет Option+ Command и еще одна клавиша (например, Option+ Command+T).
  9. Изображение с названием Automate Reports in Excel Step 9

    9

    Сохраните макрос в открытой таблице Excel. Для этого нажмите «Сохранить в» и в меню выберите «Эта книга», чтобы макрос был доступен для всех, кто откроет данную таблицу.

    • Файл Excel нужно сохранить в специальном формате с поддержкой макросов.
  10. Изображение с названием Automate Reports in Excel Step 10

    10

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

  11. Изображение с названием Automate Reports in Excel Step 11

    11

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

    • Например, чтобы выбрать данные и создать диаграмму, выделите нужные данные, нажмите «Вставка» в верхней части окна Excel, выберите тип диаграммы и отредактируйте диаграмму так, как нужно.
    • Другой пример: чтобы создать макрос для построения графика из данных, которые находятся в ячейках с A1 по A12, щелкните по пустой ячейке, введите =СУММ(A1:A12) и нажмите Enter.
  12. Изображение с названием Automate Reports in Excel Step 12

    12

    Щелкните по Остановить запись. Эта опция находится на панели инструментов «Разработчик». Запись будет остановлена, а все ваши действия, которые вы совершили во время записи, будут сохранены в виде отдельного макроса.

  13. Изображение с названием Automate Reports in Excel Step 13

    13

    Сохраните таблицу Excel как файл с поддержкой макросов. Нажмите «Файл» > «Сохранить как» и измените формат файла на «xlsm» (вместо «xls»). Затем введите имя файла, выберите папку для его сохранения и нажмите «Сохранить».

    • Если не сделать этого, макрос не будет сохранен как часть электронной таблицы, то есть им не смогут пользоваться другие люди на других компьютерах.
  14. Изображение с названием Automate Reports in Excel Step 14

    14

    Запустите макрос. Для этого нажмите сочетание клавиш, выбранное при создании макроса. Будут выполнены процессы, записанные в макросе.

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

    Реклама

  1. Изображение с названием Automate Reports in Excel Step 15

    1

    Скачайте плагин Kloudio. С его помощью вашу таблицу Excel можно соединить с внешней базой данных или источником данных. Этот плагин также работает с Google Таблицами.

  2. Изображение с названием Automate Reports in Excel Step 16

    2

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

  3. Изображение с названием Automate Reports in Excel Step 17

    3

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

  4. Изображение с названием Automate Reports in Excel Step 18

    4

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

    Реклама

Советы

  • Загружайте плагины Excel только с сайта Microsoft AppSource, если не доверяете сторонним разработчикам.
  • Макросы можно использовать для автоматизации как простых задач (например, для добавления значений или создания диаграмм), так и сложных (например, для вычисления значений в ячейках, создания диаграммы на основе результатов вычислений, маркировки диаграммы и печати полученного результата).
  • Если открыть электронную таблицу с макросом, вам, возможно, придется нажать «Включить содержимое» на желтой полосе в верхней части окна, чтобы получить возможность пользоваться макросом.

Реклама

Предупреждения

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

Реклама

Об этой статье

Эту страницу просматривали 23 124 раза.

Была ли эта статья полезной?

Генерация документов и отчетов из реестра или базы данных Excel с помощью кода VBA для просмотра, анализа и вывода на печать. Создание, заполнение, удаление.

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

Создание документа или отчета из шаблона

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

Шаблон создаем вручную на отдельном рабочем листе или с помощью кода VBA при заполнении документа. Способы создания шаблона определяют место его хранения:

  • В коде VBA. Такой способ возможен для несложных печатных форм.
  • В рабочей книге Excel с реестром или базой данных на скрытом листе.
  • В отдельном файле, который не обязательно сохранять как шаблон Excel (*.xlt*).

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

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

Назовем лист с шаблоном документа или отчета — «Shablon». Для создания новой печатной формы скрытый лист с шаблоном необходимо скопировать:

With Worksheets(«Shablon»)

  .Visible = True

  .Copy After:=Worksheets(Worksheets.Count)

  .Visible = False

End With

Данный код вставит новый лист с шаблоном в ту же книгу после всех имеющихся листов. Чтобы шаблон скопировать в новую книгу, заменяем строку .Copy After:=Worksheets(Worksheets.Count) на .Copy. Печатная форма откроется в новом файле.

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

  1. Копирование информации в переменную массива из реестра или базы данных.
  2. Создание нового документа или отчета из шаблона.
  3. Заполнение документа или отчета, обращаясь к нему как к ActiveSheet.

Копирование информации и заполнение формы

Копирование информации

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

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

Допустим, что лист называется «Reestr», а необходимая информация расположена в десяти первых ячейках каждой строки:

Dim nomer As Long, massiv() As Variant

nomer = ActiveCell.Row

massiv = Range(Cells(nomer, 1), Cells(nomer, 10))

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

Dim nomer1 As Long, nomer2 As Long, massiv() As Variant

nomer1 = Selection.Cells(1).Row

nomer2 = Selection.Cells(Selection.Cells.Count).Row

massiv = Range(Cells(nomer1, 1), Cells(nomer2, 10))

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

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

Создание и заполнение формы

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

Заполняем ячейки печатной формы информацией из массива, обращаясь к листу с формой как к ActiveSheet. Если новый документ или отчет создан в той же книге, ее можно автоматически сохранить:

Чтобы не наблюдать за мерцаниями экрана во время выполнения процедуры VBA Excel, можно временно отключить его обновления:

Sub GeneratsiyaDokumenta()

Application.ScreenUpdating = False

операторы

Application.ScreenUpdating = True

End Sub

Удаление печатной формы

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

Для этого необходимо на лист шаблона правее печатной формы вставить кнопку из коллекции «Элементы управления ActiveX». Дважды кликнуть по ней и в открывшемся модуле листа внутрь автоматически сгенерированного объявления процедуры вставить строку Call UdaleniyeLista:

Sub CommandButton1_Click()

  Call UdaleniyeLista

End Sub

Затем в модуль текущей книги добавляем процедуру:

Sub UdaleniyeLista()

  Application.DisplayAlerts = False

    ActiveSheet.Delete

  Application.DisplayAlerts = True

End Sub

Кнопка вместе с шаблоном будет копироваться в новую печатную форму. При нажатии кнопки активный лист будет удаляться кодом VBA без предупреждения от Excel.

Содержание

  1. Что такое макрос?
  2. Запись макроса в Excel
  3. Первая программа на VBA Excel
  4. Запуск редактора Visual Basic
  5. Альтернативный вариант открытия файла
  6. Создание «умной» таблицы
  7. Стиль «умной» таблицы
  8. Добавление строки итогов
  9. Отображение вкладки “Разработчик” в ленте меню
  10. Знакомство с редактором VBA
  11. Создание сводных таблиц макросом
  12. Примеры макросов для автоматизации работы
  13. Окна редактора Visual Basic

Что такое макрос?

Для начала немного о терминологии.

Макрос – это код, написанный на встроенном в Excel языке VBA (Visual Basic for Application). Макросы могут создаваться как вручную, так и записываться автоматически с помощью так называемого макрорекодера.

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

Записанный макрос можно будет запускать неограниченное количество раз и Excel повторит все записанные шаги. Это означает, что даже если вы ничего не знаете о VBA, вы можете автоматизировать некоторые задачи, просто записав свои шаги и затем повторно использовать их позже.

Теперь давайте погрузимся и посмотрим, как записать макрос в Excel.

Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например “Excel”.

Вот шаги для записи такого макроса:

  1. Перейдите на вкладку “Разработчик”.
  2. В группе “Код” нажмите кнопку “Запись макроса”. Откроется одноименное диалоговое окно.
  3. В диалоговом окне “Запись макроса” введите имя для своего макроса, например “ВводТекста”. Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов – например, “Ввод_текста”.
  4. Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
  5. В поле “Сохранить в” убедитесь, что выбрана опция “Эта книга”. Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
  6. Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
  7. Нажмите “ОК”. Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку “Остановить запись” на вкладке “Разработчик”, которая указывает, что выполняется запить макроса.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или вы можете использовать свое имя).
  10. Нажмите клавишу Enter. Вы попадете на ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

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

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

  1. Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
  2. Выберите любую ячейку – кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
  3. Перейдите на вкладку “Разработчик”.
  4. В группе “Код” нажмите кнопку “Макросы”.
  5. В диалоговом окне “Макрос” щелкните макрос “ВводТекста”.
  6. Нажмите кнопку “Выполнить”.

Вы увидите, что как только вы нажмете кнопку “Выполнить”, текст “Excel” будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.

Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.

Первая программа на VBA Excel

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

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox "Привет".

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.


Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!

Запуск редактора Visual Basic

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.

Альтернативный вариант открытия файла

 Set objExcel = New Excel.Application Set wb = objExcel.Workbooks wb.Open fname, local:=True Set ws = wb.Item(1).ActiveSheet 

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks – обновлять или нет внешние ссылки при открытии файла;
ReadOnly – открытие в режиме только для чтения;
Format – используемый при открытии разделитель (1 – символ tab, 2 – запятые, 3 – пробелы, 4 – точка с запятой, 5 – без разделителя, 6 – пользовательский разделитель, заданный в Delimiter);
Delimiter – пользовательский разделитель (в случае, если Format = 6);
Origin – тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local – использование в Excel языка такого же, как в открываемом файле.

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

 ws.Cells(1, 1).Value = "Test" ws.Cells(1, 1).Font.Size = 18 ' Поменять размер шрифта ws.Cells(1, 1).HorizontalAlignment = xlCenter ' 

Создание «умной» таблицы

Создается «умная» таблица 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

Отображение вкладки “Разработчик” в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка “Разработчик”

Знакомство с редактором VBA

  1. Создайте новую книгу Excel и сохраните ее как книгу с поддержкой макросов с расширением .xlsm. В старых версиях Excel по 2003 год – как обычную книгу с расширением .xls.
  2. Нажмите сочетание клавиш «левая_клавиша_Alt+F11», которое откроет редактор VBA. С правой клавишей Alt такой фокус не пройдет. Также, в редактор VBA можно перейти по ссылке «Visual Basic» из панели инструментов «Разработчик» на ленте быстрого доступа. Если вкладки «Разработчик» на ленте нет, ее следует добавить в настройках параметров Excel.

В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.

  1. Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.

После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.

Создание сводных таблиц макросом

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

Для описания способа создания сводных таблиц средствами процедур VBA будет использоваться таблица, которая содержит данные по месяцам о оборотах семи магазинов фирмы за последние несколько лет деятельности.

Тестовая база для примера состоит из сгруппированных данных в 21 строке. Благодаря использованию сводных таблиц можно в читабельный вид презентовать изменение данных и извлечь соответственные результаты анализа.

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

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

В данном примере создание сводной таблицы VBA-макросом будет достаточно простым. Простота решения будет достигнута за счет симуляции использования подобных параметров и действий, которые предоставляет к распоряжению мастер сводных таблиц в Excel. Используя экземпляр объекта PivotCaches запишем настройки своей сводной таблицы присвоив ей определенное имя. Это позволит потом непосредственно ссылаться на сводную таблицу в любой части кода. Для создания сводной таблицы используя макрос будем использовать метод PivotTableWizard. На этом же шаге будем использовать возможности объекта PivotFields, в котором определим структуру сводной таблицы с учетом исходных данных источника.

Написание кода макросов в Excel всегда начинается с открытия VBA-редактора (ALT+F11): «РАЗРАБОТЧИК»-«Код»-«Visual Basic».

Затем создадим модуль где будет храниться исходный код. Для этого выберите инструмент в редакторе VBA: «Insert»-«Module». В появившемся окне модуля введите следующий VBA-код макроса:

SubCreateTableM()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Лист1!A1:D21").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ"
WithActiveSheet
.Name ="Анализ"
.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
End With
WithActiveSheet.PivotTables("ТаблицаМ")
.SmallGrid =True
.PivotFields("Оборот").Orientation = xlDataField
.PivotFields("Год").Orientation = xlPageField
.PivotFields("Месяц").Orientation = xlRowField
.PivotFields("Магазины").Orientation = xlColumnField
End With
End Sub

Теперь достаточно лишь запустить макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CreateTableM»-«Выполнить»:

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

Примеры макросов для автоматизации работы

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

Макрос для поиска ближайшего значения заданному на всех листах книги Excel.
Готовое решение для поиска на всех листах рабочей книги как точного, так и максимально приближенного исходного значения. VBA код макрос для нахождения и получения числа с любого листа книги.

Макрос для слияния данных при серийной печати рассылок в Excel.
Альтернатива инструменту слияния в Word для печати рассылок прямо из Excel. Исходный код макроса, который выполняет слияние данных для серийной печати рассылок.

Макросы для фильтра сводной таблицы в Excel.
Как автоматизировать фильтр в сводных таблицах с помощью макроса? Исходные коды макросов для фильтрации и скрытия столбцов в сводной таблице.

Макрос позволяет рассчитать процент в сводной таблице Excel.
Как быстро преобразовать значения сводной таблицы на доли в процентном соотношении к общим итогам по строкам и по столбцам? Исходные коды макросов для работы с процентами.

Макрос для настройки полей и форматирования сводной таблицы.
Управление полями сводной таблицы с помощью макроса. Исходный код VBA-макроса для настройки и изменения структуры в сводных таблицах.

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

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

VBA макрос для поиска скрытых строк и столбцов на листе Excel.
Поиск всех скрытых строк и столбцов на рабочем листе с помощью VBA-макроса. Исходные коды макросов для получения сводной информации о скрытых строках и столбцах рабочего листа.

Макрос для копирования и переименования листов Excel.
Как одновременно копировать и переименовывать большое количество листов одним кликом мышкой? Исходный код макроса, который умеет одновременно скопировать и переименовать любое количество листов.

Окна редактора Visual Basic

В процессе работы в редакторе Visual Basic в Excel могут быть открыты различные окна. Управление окнами осуществляется в меню View, которое находится в верхней части окна редактора VBA.

Источники

  • https://micro-solution.ru/excel/vba/first-macros
  • https://vremya-ne-zhdet.ru/vba-excel/nachinayem-programmirovat-s-nulya/
  • https://office-guru.ru/excel/redaktor-visual-basic-v-excel-451.html
  • https://codernotes.ru/articles/vba/rabota-s-excel-fajlom-iz-vba.html
  • https://vremya-ne-zhdet.ru/vba-excel/sozdaniye-tablitsy/
  • https://exceltable.com/vba-macros/makros-svodnoy-tablicy
  • https://exceltable.com/vba-macros/

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

Как записать самый простой макрос?

Для начала запишем самый легкий макрос — зададим в ячейке А1 формат вида 12 345:

  •  Открываем новую книгу, в ячейке А1 набираем шестизначное число 123456. Сейчас оно выдается без разделителей разрядов. Запишем макрос, который ставит эти разделители.
  •  Заходим на панели инструментов в закладку Вид*, находим кнопку Макросы, жмем Запись макроса. В появившемся окне задаем имя макроса и книгу, в которой хотим этот макрос сохранить.

Важно

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

Если вы все-таки хотите хранить макросы в отдельном файле, эту книгу нужно сохранить, выбрав тип файла Книга Excel с поддержкой макросов. В противном случае после закрытия книги макросы будут стерты.

  •  Выбираем Сохранить в… —  Личная книга макросов и нажимаем Ок (рис. 1).

Рис. 1. Запись макроса в личную книгу макросов

  •  Записываем в макрос действия, которые хотим выполнить: вызываем контекстное меню Формат ячеек (можно воспользоваться комбинацией клавиш Сtrl+1) и задаем нужный нам формат числа: на закладке Число идем в блок (все форматы) и выбираем там формат вида # ##0.

К сведению

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

  •  На закладке Вид — Макросы выбираем пункт Остановить запись.

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

Мы рекомендуем

Всегда обращайте внимание на этот квадратик: если он появился на панели, значит, сейчас идет запись всех ваших действий в макрос. Не забывайте вовремя останавливать запись макроса, чтобы потом его не пришлось переделывать.

Проверяем, что макрос записан и работоспособен:

  •  в ячейку А2 вбиваем любое шестизначное число;
  •  запускаем макрос одним из двух способов: на закладке Вид — Макросы выбираем пункт Макросы или нажимаем комбинацию клавиш Alt+F8, находим в списке наш макрос и нажимаем кнопку Выполнить.

Рис. 2. Форматирование числа и остановка записи макроса

Итак, вы записали свой первый макрос! Примите поздравления. Теперь давайте познакомимся с личной книгой макросов и синтаксисом написания команд для макроса.

Личная книга макросов

По умолчанию Excel не отображает личную книгу макросов. Чтобы убедиться, что она открыта, выбираем на вкладке Вид кнопку Отобразить — в появившемся окне должна быть книга под именем PERSONAL.

Мы убедились, что книга открыта, но отображать ее не будем, чтобы потом по ошибке не закрыть ее. По сути, в этой книге нас интересует так называемый Исходный текст — блок, в котором записываются макросы. Чтобы увидеть это окно, нажмите клавиши Alt+F11 или кликните правой кнопкой мыши на ярлыке любого листа Excel и выберите в контекстном меню Исходный текст. Откроется окно VBA-кодирования в Excel (рис. 3). Оно состоит из двух блоков:

1. В левой части экрана окно Project – VBAProject — это проводник, в котором отображаются все открытые в данный момент книги Excel (даже если вы их не видите, как, например, книгу Personal). Работа с этим блоком аналогична работе в обычном проводнике — двойной клик по наименованию книги раскрывает ее содержимое. Нас интересует блок Modules — Module1. Кликаем левой кнопкой мыши дважды по этому объекту.

2. В правой части экрана откроется блок записи и редактирования макросов. Здесь уже автоматически записался Макрос1. Рассмотрим на его примере основную канву макроса.

Рис. 3. Окно VBA-кодирования в Excel

Синтаксис макроса

Макросы — это команды, написанные на языке VBA (Visual Basic for Applications). И синтаксис кода макроса не отличается от записи кода в Visual Basic.

Любой макрос имеет следующий вид:

Sub Имя_Макроса_Без_Пробелов()

‘ комментарии к макросу — они нужны для вас, VBA не воспринимает такие строки как команды

команды, написанные на языке VBA

End Sub

3 обязательных блока макроса:

1. Начало макроса. Всегда начинается с команды Sub. Далее идет имя макроса — оно может быть на русском языке, но не должно содержать пробелы и специальные символы.

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

2. Блок команд. В нашем примере он состоит из одной строки: Selection.NumberFormat = «#,##0»

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

3. Конец макроса. Всегда обозначается как End Sub.

Есть и один необязательный блок — это комментарии, которые вы можете оставлять в любом месте внутри кода макроса, поставив перед началом комментариев знак апострофа ‘. Например, вы можете описать, что именно делает тот или иной макрос.

Обратите внимание!

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

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

Например, информационная система выдает отчет «Бюджет на месяц» без выделения групповых значений цветом или шрифтом.

Нам необходимо:

  •  выделить групповые строки полужирным шрифтом;
  •  отформатировать на печать — расположить отчет по центру листа, задать масштаб 75 %, вывести в колонтитулы название отчета (рис. 4).

Рис. 4. Изменения после написания макроса

Запишем алгоритм форматирования отчета в макрос.

Нажимаем кнопку записи макроса и выполняем следующие действия:

  •  Даем макросу имя Форматирование_БДР, в блоке описания записываем, что будет делать этот макрос (например, Выделяет жирным курсивом итоги, форматирует на печать). Жмем Ок.
  •  Выделяем столбцы А:С, ставим автофильтр — на закладке Данные находим кнопку Фильтр.
  •  По столбцу КОД задаем условие не содержит точку: Текстовые фильтры — Не содержит и в поле текста ставим символ точки без пробелов (рис. 5).

Рис. 5. Использование автофильтра по столбцу «КОД»

  •  Выделяем отфильтрованный диапазон и задаем ему полужирный шрифт.
  •  Снимаем автофильтр (повторное нажатие на закладке Данные кнопки Фильтр).
  •  Заходим в меню форматирования на печать (Кнопка Файл/Office — Печать — Предварительный просмотр — Параметры страницы) и задаем там три параметра:

1) на вкладке Страница задаем масштаб 75 %;

2) на вкладке Поля отмечаем пункт Горизонтально в блоке Центрировать на странице;

3) на вкладке Колонтитулы создаем верхний колонтитул с текстом Бюджет на январь.

  •  Выходим из параметров страницы.
  •  Заканчиваем запись макроса.
  •  Нажимаем Alt+F11 и смотрим, что получилось (см. рис. 4).

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

Правила написания команд в VBA

Любая команда макроса состоит из двух блоков, разделенных точкой:

Объект.Действие с объектом или свойство объекта

Объектами в Excel являются, например:

  •  книга: WorkBook, ActiveWorkbook;
  •  лист, листы: WorkSheet, ActiveSheet, Sheets;
  •  ячейка: Cells(1,1) — в скобках указываются номера строки (Row) и столбца (Column) ячейки на листе;
  •  диапазон ячеек (может быть и одна ячейка): Range(«А1:С5»), Range(«А1»);
  •  строки (Rows);
  •  столбцы (Columns);
  •  выделение (Selection) — выделенный в данный момент диапазон (это может быть как несколько смежных ячеек, так и смежные строки или столбцы).

Примеры действий с объектами:

  •  ActiveWorkbook.Save — сохранить рабочую книгу (та, которая была активна в момент вызова пользователем макроса);
  •  Sheets(«Лист3»).Name = «Отчет» — переименовать «Лист3» в «Отчет»;
  •  Sheets(«Отчет»).Activate — перейти на лист с названием «Отчет»;
  •  Range(«А1»).Copy — скопировать в буфер обмена данные из ячейки А1;
  •  Rows(«13:13»).Delete Shift:=xlUp — удалить строку 13 со сдвигом вверх.

Примеры свойств объектов:

  •  ActiveCell.FormulaR1C1 = «БДР» — в выделенной (активной) ячейке записан текст «БДР»;
  •  ActiveCell.Row < 65 — номер ряда активной ячейки меньше 65.

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

Но об этом мы расскажем далее, а сейчас обратимся к коду нашего первого макроса, состоящего из одной строки:

Selection.NumberFormat = «#,##0»

Суть его в следующем: к объекту Выделенный диапазон (у нас одна ячейка, но это может быть и весь столбец/строка или диапазон смежных ячеек) применяется свойство Числовой формат вида # ##0 (если помните, именно этот формат мы выбрали в списке).

Код макроса Форматирование_БДР и расшифровка строк кода представлены в таблице.

 

Строка кода

Расшифровка

Sub Форматирование_БДР()

Начало макроса, имя макроса

Пустая строка комментариев (ставится автоматически при записи макроса)

‘ Форматирование_БДР Макрос

Автоматически добавленный комментарий при записи макроса — может быть удален без потери работоспособности макроса

‘ Выделяем жирным курсивом итоги, форматируем на печать

Автоматически добавленный комментарий при записи макроса из поля Описание

Пустая строка — не влияет на суть исполнения макроса, но их полезно добавлять для разделения блоков команд внутри кода

   Columns(«A:C»).Select

Выделить (Select) объект Столбцы (Columns) А:С

    Selection.AutoFilter

Применить автофильтр (AutoFilter) для выделенного диапазона (Selection)

    ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _

Задать критерий отбора «не содержит точку»

        Operator:=xlAnd

Продолжение команды из предыдущей строки.

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

    Range(«A1:C34»).Select

Выделить (Select) объект Диапазон (Range) А1:С34.

Обратите внимание: какой бы длины ни был ваш следующий отчет, для которого вы будете применять этот макрос, выделится всегда только диапазон до 34 строки!

Как сделать этот диапазон любой длины — обсудим немного позже

    Selection.Font.Bold = True

Для выделенного диапазона (Объект Selection) установить свойство «полужирный шрифт» (Font.Bold = True). Если нужно отменить какое-то свойство, пишем False

    Selection.AutoFilter

Снять автофильтр (при записи макроса это было повторное нажатие кнопки Фильтр на закладке Данные)

    With ActiveSheet.PageSetup

Начало процедуры With (используется, если далее перечисляются свойства или действия с одним и тем же объектом для компактности записи кода).

Для объекта ActiveSheet (Текущий лист) применить следующие параметры свойства PageSetup (Параметры печати):

        .PrintTitleRows = «»

Печатать на каждой странице сквозные строки — пусто (то есть данное свойство не задано пользователем)

        .PrintTitleColumns = «»

Печатать на каждой странице сквозные столбцы — пусто

    End With

Окончание процедуры With

    ActiveSheet.PageSetup.PrintArea = «»

Заданная область печати — пусто (то есть пользователь не ограничил область печати, следовательно, на экран будет выведено все, что есть на листе)

    With ActiveSheet.PageSetup

Начало процедуры With

Для объекта Текущий лист применить следующие параметры печати (цветом выделены те, которые мы изменили по сравнению со стандартными):

        .LeftHeader = «»

Левый верхний колонтитул — пусто

        .CenterHeader = «Бюджет на январь»

Центральный верхний колонтитул — задан текст пользователем

        .RightHeader = «»

Правый верхний колонтитул — пусто

        .LeftFooter = «»

Левый нижний колонтитул — пусто

        .CenterFooter = «»

Центральный нижний колонтитул — пусто

        .RightFooter = «»

Правый нижний колонтитул — пусто

        .LeftMargin = Application.InchesToPoints(0.708661417322835)

Размеры левого поля

        .RightMargin = Application.InchesToPoints(0.708661417322835)

Размеры правого поля

        .TopMargin = Application.InchesToPoints(0.748031496062992)

Размеры верхнего поля

        .BottomMargin = Application.InchesToPoints(0.748031496062992)

Размеры нижнего поля

        .HeaderMargin = Application.InchesToPoints(0.31496062992126)

Размеры верхнего колонтитула

        .FooterMargin = Application.InchesToPoints(0.31496062992126)

Размеры нижнего колонтитула

        .PrintHeadings = False

Не печатать заголовки строк и столбцов (False — пользователь не отметил этот пункт)

        .PrintGridlines = False

Не печатать сетку

        .PrintComments = xlPrintNoComments

Не печатать примечания

        .PrintQuality = 600

Качество печати — 600 точек на дюйм

        .CenterHorizontally = True

Центрировать на странице горизонтально (True — пользователь отметил этот пункт)

        .CenterVertically = False

Не центрировать по вертикали

        .Orientation = xlPortrait

Ориентация страницы — книжная

        .Draft = False

Пользователь не отметил пункт Черновая в блоке Печать

        .PaperSize = xlPaperA4

Размер бумаги А4

        .FirstPageNumber = xlAutomatic

Номер первой страницы — автоматически

        .Order = xlDownThenOver

Последовательность вывода страниц: вниз, потом вправо (пункт в блоке Печать)

        .BlackAndWhite = False

Пользователь не отметил пункт Черно-белая в блоке Печать

        .Zoom = 75

Масштаб 75 %

        .PrintErrors = xlPrintErrorsDisplayed

Пункт в блоке ПечатьОшибки ячеекКак на экране

        .OddAndEvenPagesHeaderFooter = False

Пользователь не задавал разные колонтитулы для четных и нечетных страниц (флажок в блоке Колонтитулы)

        .DifferentFirstPageHeaderFooter = False

Пользователь не задавал отдельный колонтитул для первой страницы (флажок в блоке Колонтитулы)

        .ScaleWithDocHeaderFooter = True

Флажок в блоке Колонтитулы – Изменять вместе с масштабом страницы отмечен пользователем

        .AlignMarginsHeaderFooter = True

Флажок в блоке Колонтитулы – Выровнять относительно полей страницы отмечен пользователем

        .EvenPage.LeftHeader.Text = «»

Текст колонтитулов для четных и первой страниц не задан

        .EvenPage.CenterHeader.Text = «»

        .EvenPage.RightHeader.Text = «»

        .EvenPage.LeftFooter.Text = «»

        .EvenPage.CenterFooter.Text = «»

        .EvenPage.RightFooter.Text = «»

        .FirstPage.LeftHeader.Text = «»

        .FirstPage.CenterHeader.Text = «»

        .FirstPage.RightHeader.Text = «»

        .FirstPage.LeftFooter.Text = «»

        .FirstPage.CenterFooter.Text = «»

        .FirstPage.RightFooter.Text = «»

    End With

Окончание процедуры With

End Sub

Окончание кода макроса

Редактирование макроса

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

Sub Форматирование_БДР()

‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать

‘——————

‘ Выделяем столбцы и ставим фильтр по столбцу КОД

 Columns(«A:C»).Select

 Selection.AutoFilter

 ActiveSheet.Range(«$A$1:$C$34″).AutoFilter Field:=1, Criteria1:=»<>*.*», _

 Operator:=xlAnd

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

 Range(«A1:C34»).Select

 Selection.Font.Bold = True

 Selection.AutoFilter

 ‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %

 With ActiveSheet.PageSetup

 .CenterHeader = «Бюджет на январь»

 .CenterHorizontally = True

 .Zoom = 75

 End With

End Sub

Ввод в код макроса функций и процедур

Теперь усложним код макроса, задав ему два параметра:

1. Название месяца отчета запрашиваем у пользователя.

2. Последняя строка отчета БДР (в случае если она плавающая) рассчитывается в коде макроса.

Функция InputBox

Чтобы запросить у пользователя месяц отчета, воспользуемся функцией Inputbox, которая выводит диалоговое окно, в котором пользователь может самостоятельно задать значение переменной, используемой в коде. Синтаксис функции InputBox:

Zapros = InputBox(«Текст запроса», <«Текст в шапке окна»>, <Значение по умолчанию>,…)

где Zapros — введенная вами переменная (имя придумываете вы сами), а в скобках через запятую перечисляются аргументы функции.

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

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

Важно

Имена вводимых переменных не должны совпадать с уже занятыми VBA словами под название объектов, свойств или функций!

В нашем примере присвоим результат вызова функции InputBox переменной Mes.

Например, нельзя завести свою переменную Range, Cells или Month — компилятор VBA предупредит вас, что делать этого нельзя, и не запустит макрос, пока вы не устраните ошибку (рис. 6).

Рис. 6. Пример ошибки при заведении переменной

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

Итак, приступим к редактированию кода макроса. Добавим в самое начало кода макроса строки:

‘ Запрашиваем у пользователя месяц отчета

Mes = InputBox(«Введите название месяца отчета», , «Январь»)

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

Рис. 7. Диалоговое окно для указания месяца

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

Процедура While

Используется в коде, если надо сделать одинаковые действия несколько раз подряд до тех пор, пока выполняется какое-либо условие. Синтаксис процедуры While:

Do While <условие, которое должно быть верным для выполнения процедуры>

 <список команд>

Loop

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

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

Если макрос ушел в цикл, прервите его с помощью комбинации клавиш Ctrl+Break и либо прекратите макрос (кнопка End), либо зайдите в код макроса и исправьте ошибку (кнопка Debug). Чтобы макрос не уходил в цикл, рекомендуется включить в блок условий «защиту от дурака». Например, добавляем в условие проверку, чтобы значение счетчика не превышало определенной, заведомо достаточной для нас величины.

Рассмотрим применение процедуры While для поиска конца отчета БДР.

Как видно на рис. 4, последняя строка отчета имеет код «500». Напишем процедуру, которая будет проверять значения в ячейках столбца «А» и остановит свои действия, когда найдет ячейку с кодом «500».

Обратите внимание!

Excel иногда воспринимает числа как текст, поэтому включим два условия проверки значения ячейки и добавим «защиту от дурака» на случай, если в форме отчета случайно затрется код последней строки.

Помним, что все текстовые значения надо брать в кавычки. Числа записываем без кавычек:

‘ Ищем последнюю строку отчета

Dim Row_End As Integer     ‘ Вводим переменную «счетчик номера строки»

Row_End = 1             ‘ Присваиваем ей номер 1

‘ Начинаем процедуру поиска последней строки отчета по коду «500»

Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100

‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика

Row_End = Row_End +1

Loop

Таким образом, процедура While нам нужна только для наращивания счетчика — никаких дополнительных действий она не производит. Запомните этот прием — он часто нужен в кодировании.

Теперь заменим в изначальном коде макроса номер последней ячейки (34) на переменную Row_End. Число 34 было частью текста А1:С34, а теперь нам надо часть текста заменить на переменную. Делается это с помощью символа амперсанд &:

«текст» & переменная & «текст».

В нашем случае ссылка на диапазон А1:С34 будет записана так: А1:С & Row_End.

Кроме того, вспоминаем, что и название отчета Бюджет на январь у нас тоже теперь содержит параметр и будет записываться так: Бюджет на & Mes.

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

Еще раз взглянем на получившийся код макроса:

Sub Форматирование_БДР()

‘ Макрос выделяет жирным курсивом итоги, форматирует отчет на печать

‘ ——————

‘ Запрашиваем у пользователя месяц отчета

Mes = InputBox(«Введите название месяца отчета», , «Январь»)

‘ Ищем последнюю строку отчета

Dim Row_End As Integer     ‘ Вводим переменную «счетчик номера строки»

Row_End = 1             ‘ Присваиваем ей номер 1

‘ Начинаем процедуру поиска последней строки отчета по коду «500»

‘ Критичным значением для «защиты от дурака» принимаем номер строки 100

Do While Cells(Row_End, 1).Value <> «500» And Cells(Row_End, 1).Value <> 500 And Row_End < 100

‘ До тех пор, пока код не равен 500 и номер строки меньше 100, выполняем наращивание счетчика

Row_End = Row_End +1

Loop

‘ Выделяем столбцы и ставим фильтр на КОД

 Columns(«A:C»).Select

 Selection.AutoFilter

 ActiveSheet.Range(«$A$1:$C$» & Row_End).AutoFilter Field:=1, Criteria1:=»<>*.*», _

 Operator:=xlAnd

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

 Range(«A1:C» & Row_End).Select

 Selection.Font.Bold = True

 Selection.AutoFilter

‘ Форматируем на печать: верхний колонтитул, центрирование по горизонтали, масштаб 75 %

 With ActiveSheet.PageSetup

 .CenterHeader = «Бюджет на » & Mes

 .CenterHorizontally = True

 .Zoom = 75

 End With

End Sub

Теперь макрос стал более универсальным. Добавим в него еще одну «защиту от дурака».

Если нам принципиально, правильно ли макрос нашел последнюю строку отчета, после окончания процедуры While (строка Loop) можно добавить блок проверки значения Row_End и запроса у пользователя подтверждения на продолжение макроса.

Для этого изучим функцию MsgBox, процедуру IF и команду Exit Sub.

Функция MsgBox

MsgBox — еще один способ общения с пользователем: сообщения ему какой-то информации по ходу выполнения макроса или запрос у него подтверждения по дальнейшим действиям макроса путем нажатия на кнопки вида Yes, No, Ок, Cancel.

Она имеет два вида записи:

1. Мы просто сообщаем пользователю какую-то информацию. В этом случае аргументы функции перечисляются сразу же за функцией, без использования скобок:

MsgBox «Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…

На экране отобразится диалоговое окно, и после нажатия пользователем кнопки Ок продолжится выполнение макроса (рис. 8).

Рис. 8. Первый вид записи функции MsgBox

Как и в случае с функцией InputBox, обязательным здесь является только первый аргумент — Текст сообщения. Остальные можно даже не указывать, сократив вид записи функции до вида:

2. Нам важно, что ответил пользователь, мы записываем его ответ в значение какой-то переменной (рис. 9). В этом случае аргументы функции заключаются в скобки, а перед функцией обязательно должна стоять переменная, в которую мы записываем, на какую кнопку нажал пользователь:

YesNo = MsgBox(«Текст сообщения», <Вид кнопок>, <«Текст в шапке окна»>,…)

Рис. 9. Второй вид записи функции MsgBox

Варианты вида кнопок:

  •  vbOKOnly — только кнопка ОК;
  •  vbOKCanсel — кнопки ОК и Cancel;
  •  vbYesNo — кнопки Yes и No;
  •  vbYesNoCancel — кнопки Yes, No и Cancel.

Соответственно в зависимости от нажатой кнопки значения функции MsgBox могут быть vbOK, vbCancel, vbYes или vbNo.

Процедура If

С помощью данной процедуры можно разбить команды кода на две ветки в зависимости от выполнения заданного условия. Синтаксис процедуры If:

If <условие, которое должно быть верным> Then

 <список команд при выполнении указанного условия>

else

 <список команд при невыполнении указанного условия>

End If

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

Команда Exit Sub

Прекращает выполнение макроса. Обычно ее используют в ветках процедуры If при проверке допустимости дальнейшего исполнения макроса. Обратите внимание: ни одно действие после команды Exit Sub выполнено не будет. Поэтому если вы хотите сообщить пользователю о принудительном прекращении процедуры, команду MsgBox нужно расположить выше команды Exit Sub.

Итак, объединим новые знания в код «защиты от дурака» и запишем его после строки Loop:

‘ Проверяем, дошла ли процедура While до «критичной» строки 100

‘ и спрашиваем подтверждение о продолжении выполнения макроса

If Row_End = 100 Then      

YesNo = MsgBox(«Поиск последней строки отчета дошел до 100, продолжаем?», vbYesNo)

If YesNo = vbNo Then          ‘ Если нажата кнопка «No», то…

MsgBox «Процедура прервана пользователем»   ‘ 1. выдаем сообщение для пользователя,

Exit Sub          ‘ 2. останавливаем макрос

End If

End If

В нашем коде прошло вложение одной процедуры If в другую:

  •  сначала мы проверили, дошел ли счетчик Row_End до значения 100;
  •  если дошел, мы спрашиваем у пользователя, продолжать ли нам выполнение макроса;
  •  если пользователь ответил «нет», останавливаем макрос.

В обеих процедурах If мы опустили второй блок (else): если Row_End не достиг значения 100 или пользователь ответил «да», макрос просто покинет процедуру If и продолжит выполнять команды, написанные ниже.

Каждая процедура If должна заканчиваться командой End If. Если количество строк с командой If не будет соответствовать количеству строк с командой End If, компилятор VBA сообщит об ошибке и вам придется искать, где вы потеряли конец процедуры If.

Поэтому рекомендуется сразу писать обе строки, а потом уже наполнять процедуру командами.

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

Подведем итоги

Мы с вами научились:

  •  записывать макросы через команду Вид  Макросы  Запись макроса;
  •  редактировать автоматически записанный макрос, удалять из него лишние команды;
  •  унифицировать код макроса, вводя в него переменные, которые макрос запрашивает у пользователя или рассчитывает самостоятельно,

а также изучили функции InputBox и MsgBox, процедуры While и If, команду Exit Sub.

В следующем номере рассмотрим процедуру FOR, запишем макрос суммирования результирующих статей БДР, научимся тестировать макросы и выносить кнопки вызова макроса на панель быстрого доступа.


Статья опубликована в журнале «Справочник экономиста» № 4, 2016.

Здраствуйте!
Так уж сложилось, что я не владею языками (программирования), но хорошо разбираюсь в MS Office.
Прошу помощи у Вас, так как понимаю, что без макросов тут не обойтись.
Ситуация: даны фирмы, ассортимент, их планируемые дни отгрузки. В одной вкладке я ввожу план отгрузок (под каждой фирмой свои даты).
Необходимо: отгрузки каждой фирмы должны распределиться по датам во втором листе.
Т.е. они должны не просто суммироваться по дате, а сложиться в любом порядке под датой.
Файл с исходными данными на первом листе и как это хотелось бы видеть на втором листе — во вложении.

Ручками корректировать оченно громоздко при увеличении ассортимента и количества фирм.
Заранее загадать количество ячеек под фирму или под дату — нельзя, так как смещаются выходные, застолбить ячейки с запасом не получится — кол-во столбцов ограничено 256 штуками, как вы прекрасно знаете.
Жду помощи или подсказок.

Нужно написать макрос.
Суть в том что есть некий документ, который заполняю в экселе и сохраняю в отдельный файл с названием-текущей датой.
нужно на основании данных, которые заносятся в этот документ создавать отчет. т.е. все что вношу в документ, записывалось каждый раз в новую строку в отчете.
в общем прикрепляю файл. в нем все будет понятно
Те ячейки которые нужно записать в отчет помечены желтым цветом и пронумерованы. в отчете по номерам указывать из какой ячейки что куда должно записываться.
красным выделены примечания.
данные из нужных ячеек должны переноситься в новую (пустую!!!) строку отчета после нажатия кнопки. ее название я указал в файле

Кто может прошу написать
Заранее спасибо


 

Цитата: vovik_lmz от 14.10.2010, 16:57
Суть в том что есть некий документ, который заполняю в экселе и сохраняю в отдельный файл с названием-текущей датой.

Это как, файл запроса, после каждого заполнение сохранять отдельным файлом?

ЦитироватьЛист с запросом должен быть отдельным файлом

А ПОЧЕМУ  НЕ  ТАК  КАК В ПРИМЕРЕ?
А помесячные листы отчета в  одном  файле или каждый месяц в отдельном?

Описание задачи какое-то расплывчатое.
Пример набросал для одной книги (файла). Так, нет?

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


сейчас посмотрим….
спасибо за отклик


Кнопку очистить запрос — полезно! спасибо
Поясню чуть подробнее.
В общем есть файл «Запрос..» и есть файл «Отчет»
В отчет я вручную переношу все данные из запроса
Как вы видели в файле. указано, какая ячейка из запроса, куда записывается в отчет
Запросов я делаю несколько штук в день. соответственно в отчете, на листе с названием-текущий месяц, я делаю в день несколько новых записей
Каждая строка отчета-это новый запрос.
Я заполняю запрос, сохраняю его в отдельный файл. а потом заношу все данные из запроса в отчет.
Итак нужно-чтобы по нажатию кнопки, все указанные ячейки запроса, записывались в указанные ячейки отчета, при этом все ячейки отчета должны быть доступны свободному редактированию
Макрос должен копировать каждый запрос в новую строку
Когда закончится месяц. я в запросе меняю его название и запросы начинают записывааться на новый лист, с именем-название текущего месяца


Мне понравилось как вы сделали. только можно разделить, чтобы запрос и отчет отдельными файлами был
И еще. сообщение о том что запрос уже записан в отчет, замените пожалуйста на «Запрос добавлен в отчет»


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


Цитата: vovik_lmz от 18.10.2010, 12:31
В общем есть файл «Запрос..» и есть файл «Отчет»
В отчет я вручную переношу все данные из запроса

Еще раз спрашиваю!
1.Какая необходимость разделения запроса и отчета в разные файлы?
Это немного усложняет задачу.

Цитата: vovik_lmz от 18.10.2010, 12:31
Как вы видели в файле. указано, какая ячейка из запроса, куда записывается в отчет
Запросов я делаю несколько штук в день. соответственно в отчете, на листе с названием-текущий месяц, я делаю в день несколько новых записей. Каждая строка отчета-это новый запрос. Макрос должен копировать каждый запрос в новую строку

Это было понятно раньше.

Цитата: vovik_lmz от 18.10.2010, 12:31
Я заполняю запрос, сохраняю его в отдельный файл. а потом заношу все данные из запроса в отчет.

2. Файл запроса после заполнения должен сохраняться каждый раз с новым именем?  Или как?  Если ДА, то зачем?

Цитата: vovik_lmz от 18.10.2010, 12:31
при этом все ячейки отчета должны быть доступны свободному редактированию

Ну, это дело собственных рук. Защитить лист или нет.

Цитата: vovik_lmz от 18.10.2010, 12:31
Когда закончится месяц. я в запросе меняю его название и запросы начинают записывааться на новый лист, с именем-название текущего месяца

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

На счет проверки последней строки по всем ячейкам запроса.
Сообщение «Запрос уже записан в отчет» — на случай повторного нажатия на кнопку «В ОТЧЕТ».
Проверка идет по ячейкам №9 и №10. Я посчитал, что эти ячейки уникальны для каждого запроса. Если не они, то какие?
В крайнем случае сделать отдельно, для этой проверки, уникальный номер для каждого запроса.
Сообщение о записи текущего сообщения —  рядом с кнопкой в зеленой ячейке.
Убрать полноэкранный режим  — Alt+F11, откроется окно редактора макросов, во второй строке после Sub Auto_open(), перед текстом
Application.DisplayFullScreen = True  поставить одинарную кавычку  (она там, где русская буква Э). Текст должен стать зеленым.
Нажать Alt+Q.

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Цитата: Wasilic от 18.10.2010, 17:20

Цитата: vovik_lmz от 18.10.2010, 12:31
В общем есть файл «Запрос..» и есть файл «Отчет»
В отчет я вручную переношу все данные из запроса

Еще раз спрашиваю!
1.Какая необходимость разделения запроса и отчета в разные файлы?
Это немного усложняет задачу.

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

Цитата: vovik_lmz от 18.10.2010, 12:31
Как вы видели в файле. указано, какая ячейка из запроса, куда записывается в отчет
Запросов я делаю несколько штук в день. соответственно в отчете, на листе с названием-текущий месяц, я делаю в день несколько новых записей. Каждая строка отчета-это новый запрос. Макрос должен копировать каждый запрос в новую строку

Это было понятно раньше.

2. Тут все отлично. спасибо.

Цитата: vovik_lmz от 18.10.2010, 12:31
Я заполняю запрос, сохраняю его в отдельный файл. а потом заношу все данные из запроса в отчет.

2. Файл запроса после заполнения должен сохраняться каждый раз с новым именем?  Или как?  Если ДА, то зачем?

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

Цитата: vovik_lmz от 18.10.2010, 12:31
при этом все ячейки отчета должны быть доступны свободному редактированию

Ну, это дело собственных рук. Защитить лист или нет.

4. ОК

Цитата: vovik_lmz от 18.10.2010, 12:31
Когда закончится месяц. я в запросе меняю его название и запросы начинают записывааться на новый лист, с именем-название текущего месяца

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

5. Месяц лучше писать вручную. тут разобрался

На счет проверки последней строки по всем ячейкам запроса.
Сообщение «Запрос уже записан в отчет» — на случай повторного нажатия на кнопку «В ОТЧЕТ».
Проверка идет по ячейкам №9 и №10. Я посчитал, что эти ячейки уникальны для каждого запроса. Если не они, то какие?
В крайнем случае сделать отдельно, для этой проверки, уникальный номер для каждого запроса.
Сообщение о записи текущего сообщения —  рядом с кнопкой в зеленой ячейке.
Убрать полноэкранный режим  — Alt+F11, откроется окно редактора макросов, во второй строке после Sub Auto_open(), перед текстом
Application.DisplayFullScreen = True  поставить одинарную кавычку  (она там, где русская буква Э). Текст должен стать зеленым.
Нажать Alt+Q.

6. Уникальные ячейки — №6,№8 и №9


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

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

Цитировать5. Месяц лучше писать вручную. тут разобрался

Это как посмотреть.

PS. А еще проще три в одном. Запрос, отчеты, архив.

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Да. файлов тысячи за год заполняется.
Кстати на счет имен файлов. Можно сделать так, что бы была кнопка СОХРАНИТЬ
Нажав на эту кнопку. нужно чтобы появлялось окно «Сохранить как» и автоматически появлялось имя файла «текущая дата (например 19.10.10)+данные из ячейки №7
На счет месяца — на сто процентов лучше вводить в ручную. потому что дату, которая ставится в запросе. я заранее не знаю. она как правило отличается от даты заполнения запроса. (туда ставится дата сдачи запроса в бухгалтерию, а это может быть и через неделю после составления запроса)
Предложение мне ваше понравилось.
Но мне будет намного удобнее если будет происходить обратная операция
То есть на основании данных из отчета будет формироваться запрос, который будет на отдельном листе,  но в той же книге, что и отчет
Напротив каждой строки можно добавить кнопку «сформировать запрос»
Это мне пригодится для тех случаев, когда мне нужно повторно распечатать запрос, чтобы заново не набивать его
Вы прям читаете мои мысли!! спасибо за понимание!!!!!!!


Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


А на счет разделения на файлы?
Мне нужно обязательно в отдельный файл сохранять каждый запрос


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


Цитата: vovik_lmz от 20.10.2010, 16:08
А на счет разделения на файлы?
Мне нужно обязательно в отдельный файл сохранять каждый запрос

Ниииччеего не понимаю. ???
Один листик запроса в отдельном файле. Для чего? Что с ним делается потом? Посмотреть когда надо?  Повторно распечатать?

Так эта же возможность есть и в предложенном варианте.
Отфильтровать в архиве записи по  дате и организации скопировать на лист «Запрос» и пожалста, смотри, печатай.
Или я чё-то не должен знать? :-

Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


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


В макросе не понял, когда выводится сообщение «Семь раз отмерь, один…» ???


подскажите
Отображение времени в ячейке
Sub Time()
Sheets(«time»).Select
Range(«E20»).Select
Range(«E20») = Timer
End Sub

Отображает неверное время. при каждом запуске время меняется
Что не так?
Нужно текущее время, секунды чтобы шли


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


Запрет — см. вложение.

копирование

Sub Макрос3()
a_ = Selection.Address
Selection.Copy Workbooks("Другая_книга").Sheets("Название_листа").Range(a_)
End Sub

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


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


Цитата: _Boroda_ от 21.10.2010, 13:11
Запрет — см. вложение.

копирование

Sub Макрос3()
a_ = Selection.Address
Selection.Copy Workbooks("Другая_книга").Sheets("Название_листа").Range(a_)
End Sub

А если книга закрыта? и находится в папке отличной от папки в которой книга с данным макросом находится?


Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


Спасибо!
И напоследок.
Если что можно к вам по электронной почте писать?
И посоветуйте книгу для самостоятельного изучения VBA. от А до Я
Так то я немного понимаю немного. простейший макрос напишу. но хотелось бы подробнее изучить.


реакция на изменение ячейки  в примере не то
Вот у меня есть ячейка
Нужно чтобы этой ячейке появлялось значение в зависимости от содержания определенной ячейки. наподобие функции если
допустим. если  ячейка A1=1 то
ячейка А2= «один»
Иначе
Если ячейка В1=2 то
ячейка А2=»два»
и значение в ячейке А2 должно меняться автоматически, как только изменится значение в ячейке А1 или В2
При этом изменение значения в ячейке А1 должно означать очищение значения в ячейке В2 и наоборот, изменение ячейки В2, должно сопровождаться очищением ячейки А1


Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.


#Руководства

  • 23 май 2022

  • 0

Как с помощью макросов автоматизировать рутинные задачи в Excel? Какие команды они выполняют? Как создать макрос новичку? Разбираемся на примере.

Иллюстрация: Meery Mary для Skillbox Media

Ксеня Шестак

Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.

Макрос (или макрокоманда) в Excel — алгоритм действий в программе, который объединён в одну команду. С помощью макроса можно выполнить несколько шагов в Excel, нажав на одну кнопку в меню или на сочетание клавиш.

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

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

В статье разберёмся:

  • как работают макросы и как с их помощью избавиться от рутины в Excel;
  • какие способы создания макросов существуют и как подготовиться к их записи;
  • как записать и запустить макрос начинающим пользователям — на примере со скриншотами.

Общий принцип работы макросов такой:

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

Макросы могут выполнять любые действия, которые в них запишет пользователь. Вот некоторые команды, которые они умеют делать в Excel:

  • Автоматизировать повторяющиеся процедуры.

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

  • Объединять работу нескольких программ Microsoft Office.

    Например, с помощью одного макроса можно создать таблицу в Excel, вставить и сохранить её в документе Word и затем отправить в письме по Outlook.

  • Искать ячейки с данными и переносить их в другие файлы.

    Этот макрос пригодится, когда нужно найти информацию в нескольких объёмных документах. Макрос самостоятельно отыщет её и принесёт в заданный файл за несколько секунд.

  • Форматировать таблицы и заполнять их текстом.

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

  • Создавать шаблоны для ввода данных.

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

  • Создавать новые функции Excel.

    Если пользователю понадобятся дополнительные функции, которых ещё нет в Excel, он сможет записать их самостоятельно. Все базовые функции Excel — это тоже макросы.

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

В Excel и других программах Microsoft Office макросы создаются в виде кода на языке программирования VBA (Visual Basic for Applications). Этот язык разработан в Microsoft специально для программ компании — он представляет собой упрощённую версию языка Visual Basic. Но это не значит, что для записи макроса нужно уметь кодить.

Есть два способа создания макроса в Excel:

  • Написать макрос вручную.

    Это способ для продвинутых пользователей. Предполагается, что они откроют окно Visual Basic в Еxcel и самостоятельно напишут последовательность действий для макроса в виде кода.

  • Записать макрос с помощью кнопки меню Excel.

    Способ подойдёт новичкам. В этом варианте Excel запишет программный код вместо пользователя. Нужно нажать кнопку записи и выполнить все действия, которые планируется включить в макрос, и после этого остановить запись — Excel переведёт каждое действие и выдаст алгоритм на языке VBA.

Разберёмся на примере, как создать макрос с помощью второго способа.

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

Так выглядят таблицы с продажами автосалона в первоначальном виде
Скриншот: Skillbox Media

Пользоваться таким отчётом неудобно — нужно сделать его наглядным. Запишем макрос при форматировании таблицы с продажами за январь и затем применим его к двум другим таблицам.


Готовимся к записи макроса

Кнопки для работы с макросами в Excel находятся во вкладке «Разработчик». Эта вкладка по умолчанию скрыта, поэтому для начала разблокируем её.

В операционной системе Windows это делается так: переходим во вкладку «Файл» и выбираем пункты «Параметры» → «Настройка ленты». В открывшемся окне в разделе «Основные вкладки» находим пункт «Разработчик», отмечаем его галочкой и нажимаем кнопку «ОК» → в основном меню Excel появляется новая вкладка «Разработчик».

В операционной системе macOS это нужно делать по-другому. В самом верхнем меню нажимаем на вкладку «Excel» и выбираем пункт «Параметры…».

Нажимаем сюда, чтобы вызвать панель с дополнительными параметрами Excel в macOS
Скриншот: Skillbox Media

В появившемся окне нажимаем кнопку «Лента и панель».

Выбираем параметр «Лента и панель»
Скриншот: Skillbox Media

Затем в правой панели «Настроить ленту» ищем пункт «Разработчик» и отмечаем его галочкой. Нажимаем «Сохранить».

Отмечаем пункт «Разработчик» и сохраняем изменения
Скриншот: Skillbox Media

Готово — вкладка «Разработчик» появилась на основной панели Excel.

Теперь можно работать с макросами
Скриншот: Skillbox Media

Чтобы Excel смог сохранить и в дальнейшем использовать макрос, нужно пересохранить документ в формате, который поддерживает макросы. Это делается через команду «Сохранить как» на главной панели. В появившемся меню нужно выбрать формат «Книга Excel с поддержкой макросов».

Перед записью макросов нужно сохранить документ в формате с их поддержкой
Скриншот: Skillbox Media

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

  • Макрос записывает все действия пользователя.

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

  • Работу макроса нельзя отменить.

    Все действия, которые выполняет запущенный макрос, остаются в файле навсегда. Поэтому перед тем, как запускать макрос в первый раз, лучше создать копию всего файла. Если что-то пойдёт не так, можно будет просто закрыть его и переписать макрос в созданной копии.

  • Макрос выполняет свой алгоритм только для записанного диапазона таблиц.

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

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

Нажимаем сюда, чтобы начать запись макроса
Скриншот: Skillbox Media

Появляется окно для заполнения параметров макроса. Нужно заполнить поля: «Имя макроса», «Сохранить в», «Сочетание клавиш», «Описание».

Так выглядит окно с параметрами макроса
Скриншот: Skillbox Media

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

Первым символом в названии обязательно должна быть буква. Другие символы могут быть буквами или цифрами. Важно не использовать пробелы в названии — их можно заменить символом подчёркивания.

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

Если выбрать параметр «Эта книга», макрос будет доступен при работе только в этом файле Excel. Чтобы макрос был доступен всегда, нужно выбрать параметр «Личная книга макросов» — Excel создаст личную книгу макросов и сохранит новый макрос в неё.

«Сочетание клавиш» — здесь к уже выбранным двум клавишам (Ctrl + Shift в системе Windows и Option + Cmd в системе macOS) нужно добавить третью клавишу. Это должна быть строчная или прописная буква, которую ещё не используют в других быстрых командах компьютера или программы Excel.

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

«Описание» — необязательное поле, но лучше его заполнять. Например, можно ввести туда последовательность действий, которые планируется записать в этом макросе. Так не придётся вспоминать, какие именно команды выполнит этот макрос, если нужно будет запустить его позже. Плюс будет проще ориентироваться среди других макросов.

В нашем случае с форматированием таблицы заполним поля записи макроса следующим образом и нажмём «ОК».

Заполняем поля и жмём «ОК», чтобы начать запись
Скриншот: Skillbox Media

После этого начнётся запись макроса — в нижнем левом углу окна Excel появится значок записи.

Началась запись макроса — теперь в него попадут все клики мышки и нажатия клавиш
Скриншот: Skillbox Media

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

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

Так макрос будет работать и для таблиц с большим количеством строк
Скриншот: Skillbox Media

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

Так макрос отформатирует только выбранные строки: если в других таблицах строк окажется больше, они останутся в первоначальном виде
Скриншот: Skillbox Media

После всех манипуляций с оформлением таблица примет такой вид:

Так выглядит таблица после форматирования
Скриншот: Skillbox Media

Проверяем, все ли действия с таблицей мы выполнили, и останавливаем запись макроса. Сделать это можно двумя способами:

  • Нажать на кнопку записи в нижнем левом углу.
  • Перейти во вкладку «Разработчик» и нажать кнопку «Остановить запись».

Нажимаем сюда, чтобы остановить запись макроса
Скриншот: Skillbox Media

Готово — мы создали макрос для форматирования таблиц в границах столбцов A–G. Теперь его можно применить к другим таблицам.


Запускаем макрос

Перейдём в лист со второй таблицей «Февраль_2022». В первоначальном виде она такая же нечитаемая, как и первая таблица до форматирования.

Так выглядит таблица до запуска макроса
Скриншот: Skillbox Media

Отформатируем её с помощью записанного макроса. Запустить макрос можно двумя способами:

  • Нажать комбинацию клавиш, которую выбрали при заполнении параметров макроса — в нашем случае Option + Cmd + Ф.
  • Перейти во вкладку «Разработчик» и нажать кнопку «Макросы».

Нажимаем сюда, чтобы вызвать панель для выбора макроса
Скриншот: Skillbox Media

Появляется окно — там выбираем макрос, который нужно запустить. В нашем случае он один — «Форматирование_таблицы». Под ним отображается описание того, какие действия он включает. Нажимаем «Выполнить».

Нажимаем сюда, чтобы запустить макрос для форматирования таблицы
Скриншот: Skillbox Media

Готово — вторая таблица с помощью макроса форматируется так же, как и первая.

За пару секунд с помощью макроса исходная таблица принимает такой вид
Скриншот: Skillbox Media

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

Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше

Понравилась статья? Поделить с друзьями:
  • Макрос для excel отправка почты через outlook
  • Макрос для excel относительные ссылки
  • Макрос для excel округление
  • Макрос для excel обучение для начинающих
  • Макрос в microsoft office word 2007