Мои разработки в excel

Excel для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Visio, план 2 Excel 2021 Outlook 2021 PowerPoint 2021 Visio профессиональный 2021 Visio стандартный 2021 Excel 2019 Outlook 2019 PowerPoint 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Outlook 2016 PowerPoint 2016 Visio профессиональный 2016 Visio стандартный 2016 Excel 2013 Outlook 2013 PowerPoint 2013 Visio профессиональный 2013 Visio 2013 Excel 2010 Outlook 2010 PowerPoint 2010 Visio 2010 Visio стандартный 2010 Еще…Меньше

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

  1. На вкладке Файл перейдите в раздел Параметры > настройка ленты.

  2. В разделе Настройка ленты в списке Основные вкладки установите флажок Разработчик.

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

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

  • написания макросов;

  • запуска ранее записанных макросов;

  • использования XML-команд;

  • использования элементов ActiveX;

  • Создание приложений для использования с программами Microsoft 365.

  • использования элементов управления формы в Microsoft Excel;

  • работы с таблицей свойств фигуры в Microsoft Visio;

  • создания фигур и наборов элементов в Microsoft Visio.

Нужна дополнительная помощь?

1 звезда
2 звезды
3 звезды
4 звезды
5 звезд

Открываем инструменты разработчика в Excel

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

Откройте инструменты разработчика и начните создавать макросы и приложения для программ Microsoft Office. Мы покажем, как сделать это в Excel 2007 и более поздних версиях программы.

Microsoft Office Excel 2007

Открываем инструменты разработчика в Excel

  • Откройте меню «Файл» — кнопка в виде значка Windows в левом верхнем углу.
  • Выберите раздел «Параметры Excel» и подраздел «Основные».
  • Поставьте галочку напротив пункта «Показывать вкладку «Разработчик» на ленте».

Microsoft Office Excel 2010, 2013, 2016

  • Откройте меню «Файл» — «Параметры» — «Настройка ленты».
  • В списке «Основные вкладки» установите флажок напротив пункта «Разработчик».
  • Нажмите «ОК», чтобы подтвердить свое решение. Инструменты разрабочика появятся в ленте основных вкладок Excel.

Читайте также:

  • Как изменить цвет ссылки в PowerPoint?
  • Не активируется Microsoft Office — что делать?
  • Excel: 10 формул для работы в офисе

Фото:Microsoft Office Excel 2007

Ольга Дмитриева

Редактор направлений «Мобильные устройства» и «Техника для дома»

Была ли статья интересна?

Каждый, кто сталкивался с написанием макросов в Excel версий 2007 и позже, слышал, что существует вкладка Разработчик. А ведь в ней можно работать не только с возможностями макросов, но и создавать элементы управления (кнопки запуска макросов), настраивать импорт через XML и так далее. Мощное и удобное дополнение к имеющимся вкладкам. 

Поскольку в Excel 2007 в отличие от версии 2003 добавили Ленту команд, появились связанные с ней новые возможности. Одна из них — очень удобная вкладка Разработчик. Как видно на рисунке, на ней есть довольно большое количество функций, которые удобно сразу вызывать и не лезть вглубь программы.

Вкладка Разработчик
Она не доступна изначально, но легко включается через Настройки Excel:

Содержание

  • Вкладка Разработчик. Как включить?
  • Вкладка Разработчик. Основные возможности
  • Раздел Код
  • Раздел Элементы управления
  • Раздел XML
  • Раздел Изменить
  • Похожие статьи

Вкладка Разработчик. Как включить?

Заходим в Настройки Excel (круглая кнопка в левом верхнем углу) — нажимаем кнопку Параметры Excel — первая вкладка Основные — ставим галочку Показывать вкладку «Разработчик» на ленте.

Вкладка разработчик 2

Вкладка должна появиться рядом со вкладкой Вид.

Для Excel 2016 зайдите в  Параметры — Настройка ленты — в разделе Основные вкладки справа поставьте галочку в пункте Разработчик, и нажмите кнопку ОК.

Вкладка Разработчик. Основные возможности

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

Раздел Код

Вкладка разработчик Код
Опишем каждую из доступных кнопок

Visual Basic — с ее помощью заходим в окно VBA, где можно написать макрос, горячая клавиша Alt + F11

Макросы — откроется панель выбора макросов, горячая клавиша Alt + F8. Подробно о том как запустить макрос можно читать здесь.

Запись макроса — повторяет кнопку внизу панели, для записи макроса макрорекордером.
Вкладка разработчик Код 2
Относительные ссылки — интересная функция, подробней о которой можно прочитать, если навести на нее мышкой:

Вкладка разработчик Код 3

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

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

Раздел Элементы управления

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

Вкладка разработчик Элементы Управления 0

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

Режим конструктора — если вы вставили кнопку, то вам нужно управлять ее свойствами и размерами, это возможно в режиме конструктора.

Свойства — так же нам нужно управлять свойствами кнопок или другого объекта, в том числе листа Excel. Чтобы открыть меню свойств кнопки, запустите режим конструктора, а затем нажмите Свойства. А здесь уже выбор неплохой — цвет, шрифт, границы, печатать объект или нет и т.д. и т.п.
Вкладка разработчик Элементы Управления Свойства
Просмотр кода — во многом дублирует кнопку Visual Basic из раздела Код, но при нажатии этой кнопки, вы сразу попадаете на код привязанный к объекту. А когда объектов много, это очень удобно!

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

Раздел XML

Вкладка разработчик XML
XML (Extensible Markup Language) — расширяемый язык разметки, разработанный специально для размещения информации в World Wide Web. Довольно часто применяется для разного рода обменов данными, как универсальный язык. Например, между сайтом и Excel, 1C и Access и так далее.

Кнопка Источник — при помощи Excel мы можем перевести данные в XML и после использовать их в веб, например, на сайте.

Если вы создали таблицу, то для нее нужно прописать карту XML. Об этом, думаю, тоже стоит написать отдельную статью. В ближайшее время.

Пакеты расширений — по умолчанию подключен пакет Actions Pane 3.

Импорт/Экспорт — если вы настроили импорт или экспорт данных из XML, вы можете передавать или получать данные этими кнопками.

Раздел Изменить

Вкладка разработчик Изменить

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

При ее нажатии открывается окно настройки Область сведений о документе.

Вкладка разработчик Область сведений

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

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

Если остались вопросы, пишите смело в комментарии.

Автор: Андрей Дата: 02.09.2016 Рубрика: Бизнес-анализ, Разработка бизнес-плана

Мои шаблоны Excel для бизнеса (бесплатные)Мои шаблонные разработки в формате Excel:

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



Пошаговая инструкция по выполнению полного комплекса финансовых расчетов для бизнес-плана – эта инструкция состоит из 14-ти основных блоков (шагов), где я простыми словами и максимально детально разъяснил, как строится финансовая часть бизнес-плана. Все шаги показаны на примере моей финансовой модели в Excel, на разработку которой я потратил 9 месяцев скрупулезных трудов, ввел тысячи формул и построил шаблоны основных таблиц и аналитических диаграмм. Скачивайте модель и стройте в ней свою финансовую часть бизнес-плана.

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

Модель упрощенного бизнес-плана – шаблон для расчета точки безубыточности и предварительного определения прибыльности для вашего конкретного проекта.

Универсальный шаблон для создания бизнес-плана – шаблон для составления бизнес-плана, предназначенного для внутреннего пользования компаний малого и среднего бизнеса различных отраслей. Данный шаблон позволяет составить бизнес-план по основным его разделам таким, как Резюме, Анализ рынка, Производственный план, План персонала, Финансовый план, Риски и т.д. Эта модель дает возможность подготовить бизнес-план как для одного сценария развития событий, так и позволяет сравнить три варианта, чтобы можно было смоделировать различные сценарии развития бизнеса и наглядно сравнить их отличия.

Решения на базе MS Access:

Универсальный шаблон для SWOT-анализа – автоматизированный формат для составления SWOT-анализа мелкого и среднего бизнеса. Используя эту мою разработку, вы сможете без труда определить сильные и слабые стороны, возможности и угрозы для своего бизнеса. Также данная разработка позволяет дополнять все разделы SWOT-анализа своими вариантами.

Автоматизированный помощник риелтора – программа, с помощью которой вы за 8-10 минут сможете составить информативное и красивое описание квартиры, которую хотите сдать в аренду или продать. Составление объявления выполняется путем ответов на обычные вопросы, касающиеся описания квартиры (очень похоже на простую анкету). Все составленные вами объявления сохраняются в базу данных и к ним всегда можно вернуться для редактирования. Заполняя одно описание для квартиры, вы получаете четыре варианта объявлений: полное объявление с разбивкой на основные разделы (месторасположение, описание, придомовая территория и инфраструктура), полное объявление без разбиения на разделы, тексты объявления объемом около 1000 и 500 знаков включая пробелы.

Шаблоны в формате Word:

Шаблон бизнес-плана – это простой шаблон, который имеет разбивку на основные разделы: Соглашение о конфиденциальности, Резюме, Описание компании, Продукты и услуги, Анализ рынка, Описание стратегии, Организация управления, Финансовый план.

Шаблон для проведения SWOT-анализа – стандартный квадрат SWOT-анализа, размещенный на листе А4, разделенный на четыре части, в каждой из которых вы можете записать сильные и слабые стороны, возможности и угрозы своего бизнеса.

Обучающие материалы:

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

Журнала учёта потерь производства – обучающий материал с наглядной демонстрацией того, как составить журнал учёта потерь производства в формате Excel. Помимо обучающего видео, есть возможность скачать пример журнала учёта потерь.

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



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

При использовании материалов сайта наличие активной ссылки на www.blogbusiness.com.ua обязательно

  • Введение в программирование в Excel

Программирование в Excel (Содержание)

  • Введение в программирование в Excel
  • Как программировать в Excel?

Введение в программирование в Excel

Вы когда-нибудь уставали выполнять задачи в Excel, которые, по вашему мнению, могут быть автоматизированы и сэкономить ваше время? В большинстве случаев вы сталкивались с такими задачами. Однако для того, чтобы автоматизировать любую задачу, вам прежде всего необходимо иметь навыки программирования для этого конкретного языка. В Excel вы можете выполнять программирование с помощью Visual Basic for Application (VBA), который является собственным языком программирования Excel, который может помочь вам автоматизировать задачи. В этой статье мы увидим, как мы можем заниматься программированием в Excel VBA. VBA можно использовать для написания программы, которая может автоматизировать задачу для вас. Часть строк, которую мы пишем в VBA, называется Macro, которая написана таким образом, что они инструктируют систему Excel о том, что нужно сделать.

Как программировать в Excel?

Давайте разберемся, как программировать в Excel с несколькими иллюстрациями.

Включение вкладки разработчика

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

  • Перейдите в меню « Файл» в вашем файле Excel и нажмите на него.

  • В меню «Файл» нажмите « Параметры», и откроется новое окно со всеми доступными параметрами Excel.

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

  • Включите параметр « Разработчик» в раскрывающемся списке «Основные вкладки» в разделе « Настройка ленты: ». Вы можете отметить (отметить) вкладку « Разработчик », чтобы включить ее. Нажмите кнопку ОК, расположенную в правом нижнем углу вкладки Параметры Excel, и все.

  • Вы успешно включили опцию Разработчик в вашем Excel. Если вы проверите ленту Excel в своем файле сейчас, вы сможете увидеть новую вкладку, добавленную туда с именем Developer.

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

Запись макроса

  • Откройте файл Excel. Перейдите на вкладку « Разработчик », которую вы только что включили, а затем нажмите кнопку « Записать макрос», классифицируйте ее и можно увидеть в разделе « Код ».

  • Как только вы нажмете кнопку «Запись макроса», вы увидите всплывающее окно, в этом окне вам нужно будет присвоить имя макросу, вы также можете назначить горячую клавишу для запуска этого макроса. Можно добавить описание, если таковое имеется для этого макроса, который вы создаете. Как только вы закончите со всем этим, вы можете нажать на кнопку ОК, расположенную в правой нижней части окна. Смотрите скриншот ниже для вашей справки.

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

  • Попробуйте ввести предложение «Это мой первый код VBA, и я очень счастлив!» В ячейке A1 на листе Excel и нажмите клавишу «Ввод». Эти шаги будут записаны в серверной части макроса.

  • В разделе «Код» вы могли заметить, что кнопка «Запись макроса» была изменена на «Остановить запись». Это как Play and Stop. Макрос записи работает как кнопка воспроизведения, а остановка записи работает как кнопка остановки. Нажмите кнопку «Остановить запись», чтобы остановить запись.

Волшебство, стоящее за всем этим, заключается в том, что Excel записал мои шаги здесь и преобразовал их в фрагменты кода, чтобы эта задача могла быть автоматизирована. Это означает, что каждый шаг, выбрав ячейку A1, введите текст «Это мой первый код VBA, и я счастлив!», Нажав Enter, чтобы перейти к следующей ячейке. Все эти шаги преобразуются в код VBA. Давайте проверим код сейчас.

  • Чтобы перейти к редактору Visual Basic, вы можете щелкнуть параметр Visual Basic в категории « Код » на вкладке « Разработчик » или использовать Alt + F11 в качестве ярлыка для того же.

  • Перейдите к разделу « Модули » в VBAProject и нажмите кнопку «плюс» под ним, чтобы увидеть список активных модулей в VBA.

  • Внутри папки Modules вы можете увидеть Module1, как только вы нажмете на знак плюс. Вы можете дважды щелкнуть на модуле 1, где записан ваш код для задачи, которую мы выполняли на предыдущих шагах (шаги 3 и 4). Сохраните этот код, и вы сможете запускать его каждый раз, чтобы получить один и тот же вывод. Смотрите скриншот ниже:

Вывод

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

Что нужно помнить о программировании в Excel

  • Вкладка «Разработчики» по умолчанию не включена и отображается в ленте Excel. Вам нужно включить его через параметры Excel.
  • Запись макроса работает над простыми задачами, которые повторяются, и вам нужно автоматизировать их. Тем не менее, для сложных задач, которые включают в себя циклы или условные входы и выходы, их все равно необходимо кодировать вручную в VBA.
  • Вам необходимо сохранить файл в формате Excel-Macro Enable, чтобы иметь возможность читать и снова запускать код в Excel.

Рекомендуемые статьи

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

  1. Компоненты ленты в Excel
  2. Введение в формулу TRIM в Excel
  3. Шаблон управления проектами в Excel
  4. Как использовать COUNTIFS в Excel?

Время на прочтение
7 мин

Количество просмотров 312K

Приветствую всех.

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

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

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

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

Появилась вкладка.

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

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

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

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

Кодим

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

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Sub FormatPrice()End Sub

Напишем Hello World:

Sub FormatPrice()
    MsgBox "Hello World!"
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

' Процедура. Ничего не возвращает
' Перегрузка в VBA отсутствует
Sub foo(a As String, b As String)
    ' Exit Sub ' Это значит "выйти из процедуры"
    MsgBox a + ";" + b
End Sub' Функция. Вовращает Integer
Function LengthSqr(x As Integer, y As IntegerAs Integer
    ' Exit Function
    LengthSqr = x * x + y * y
End FunctionSub FormatPrice()
    Dim s1 As String, s2 As String
    s1 = "str1"
    s2 = "str2"
    If s1 <> s2 Then
        foo "123""456" ' Скобки при вызове процедур запрещены
    End IfDim res As sTRING ' Регистр в VB не важен. Впрочем, редактор Вас поправит
    Dim i As Integer
    ' Цикл всегда состоит из нескольких строк
    For i = 1 To 10
        res = res + CStr(i) ' Конвертация чего угодно в String
        If i = 5 Then Exit For
    Next iDim x As Double
    x = Val("1.234"' Парсинг чисел
    x = x + 10
    MsgBox xOn Error Resume Next ' Обработка ошибок - игнорировать все ошибки
    x = 5 / 0
    MsgBox xOn Error GoTo Err ' При ошибке перейти к метке Err
    x = 5 / 0
    MsgBox "OK!"
    GoTo ne

Err:
    MsgBox 

"Err!"

ne:

On Error GoTo 0 ' Отключаем обработку ошибок

    ' Циклы бывает, какие захотите
    Do While True
        Exit DoLoop 'While True
    Do 'Until False
        Exit Do
    Loop Until False
    ' А вот при вызове функций, от которых хотим получить значение, скобки нужны.
    ' Val также умеет возвращать Integer
    Select Case LengthSqr(Len("abc"), Val("4"))
    Case 24
        MsgBox "0"
    Case 25
        MsgBox "1"
    Case 26
        MsgBox "2"
    End Select' Двухмерный массив.
    ' Можно также менять размеры командой ReDim (Preserve) - см. google
    Dim arr(1 to 10, 5 to 6) As Integer
    arr(1, 6) = 8Dim coll As New Collection
    Dim coll2 As Collection
    coll.Add "item""key"
    Set coll2 = coll ' Все присваивания объектов должны производится командой Set
    MsgBox coll2("key")
    Set coll2 = New Collection
    MsgBox coll2.Count
End Sub

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

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

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
    Sheets("result").Cells.Clear
    Sheets("data").Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets("result").Activate
Dim r As Range
Set r = Range("A1")
r.Value = "123"
Set r = Range("A3,A5")
r.Font.Color = vbRed
r.Value = "456"
Set r = Range("A6:A7")
r.Value = "=A1+A3"

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As IntegerAs String
    GetCol = Chr(Asc("A") + Col)
End FunctionFunction GetCellS(Sheet As String, Col As Integer, Row As IntegerAs Range
    Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row))
End FunctionFunction GetCell(Col As Integer, Row As IntegerAs Range
    Set GetCell = Range(GetCol(Col) + CStr(Row))
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ' про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
    Dim I As Integer ' строка в data
    CurRow = 1
    Dim Groups(1 To GroupsCount) As String
    Dim PrGroups(1 To GroupsCount) As String

    Sheets(

"data").Activate
    I = 2
    Do While True
        If GetCell(0, I).Value = "" Then Exit Do
        ' ...
        I = I + 1
    Loop
End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer
For I2 = 1 To GroupsCount
    Groups(I2) = GetCell(I2, I)
Next I2
' ...
For I2 = 1 To GroupsCount ' VB не умеет копировать массивы
    PrGroups(I2) = Groups(I2)
Next I2
I =  I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
    If Groups(I2) <> PrGroups(I2) Then
        Dim I3 As Integer
        For I3 = I2 To GroupsCount
            AddHeader I3, Groups(I3)
        Next I3
        Exit For
    End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Sub AddHeader(Ty As Integer, Name As String)
    GetCellS("result", 1, CurRow).Value = Name
    CurRow = CurRow + 1
End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount - 1
    GetCellS("result", I2, CurRow).Value = GetCell(I2, I)
Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets("Result").Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

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

Sub AddHeader(Ty As Integer, Name As String)
    Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow)).Merge
    ' Чтобы не заводить переменную и не писать каждый раз длинный вызов
    ' можно воспользоваться блоком With
    With GetCellS("result", 0, CurRow)
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        Select Case Ty
        Case 1 ' Тип
            .Font.Bold = True
            .Font.Size = 16
        Case 2 ' Производитель
            .Font.Size = 12
        End Select
        .HorizontalAlignment = xlCenter
    End With
    CurRow = CurRow + 1
End Sub

Уже лучше:

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Sub AddHeader(Ty As Integer, Name As String)
    With Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow))
        .Merge
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        .HorizontalAlignment = xlCenterSelect Case Ty
        Case 1 ' Тип
            .Font.Bold = True
            .Font.Size = 16
            .Borders(xlTop).Weight = xlThick
        Case 2 ' Производитель
            .Font.Size = 12
            .Borders(xlTop).Weight = xlMedium
        End Select
        .Borders(xlBottom).Weight = xlMedium ' По убыванию: xlThick, xlMedium, xlThin, xlHairline
    End With
    CurRow = CurRow + 1
End Sub

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ' строка в  data
CurRow = 0 ' чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
    CurRow = CurRow + 1
    Dim I3 As Integer

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Хитрости »

11 Август 2014              95553 просмотров


Как создать свою надстройку?

В этой статье:

  • Что такое надстройка
  • Как создать надстройку
  • Создание собственного меню надстройки для версий Excel 2003
  • Создание собственного меню надстройки для версий 2007 и выше

 
ЧТО ТАКОЕ НАДСТРОЙКА
Для начала разберемся — что такое надстройка и для чего она нужна.

Надстройка

— это файл Excel, имеющий расширение .xla или .xlam(только для 2007 и выше), который по умолчанию открывается как скрытая рабочая книга и может быть подключен к приложению для автоматического запуска вместе с запуском самого приложения. Книга надстройки открывается, но в списке видимых открытых файлов не значится, поэтому нет смысла её там искать. Отобразить такую книгу возможно только кодом.

Есть также и другие виды надстроек — надстройки COM и XLL-надстройки. Но о них я не буду рассказывать, т.к. они разрабатываются не в VBA, а в иных средах программирования

Как правило надстройки используют для распространения программного кода, который будет доступен для любой книги Excel. Т.к. надстройка запускается вместе с приложением — очень удобно хранить в ней коды. Можно создать меню для запуска процедур(об этом ниже) и функции пользователя — созданные в надстройке они доступны в любой открытой книге Excel без ссылок на другую книгу, что несомненно очень удобно. Функции пользователя, прописанные в надстройке для Excel 2007 и выше так же доступны по вводимым начальным символам:
Подбор по имени функции
и после нажатия TAB имя функции будет вставлено в ячейку.
Кроме модулей с кодами надстройки могут содержать и таблицы данных и диаграммы и все, что можно хранить в обычной книге. Но учитывая то, что книга скрыта — особого смысла в этих данных нет, если только не предполагается использовать эти данные в качестве шаблонов для создания определенных отчетов из надстройки. Часто на листах надстроек хранят константы для работы кода, если по каким-либо причинам не хочется использовать константы внутри кода VBA. Данные в ячейках файла надстройки можно изменять во время работы, но я не рекомендую сохранять открытый и исполняемый в данный момент файл надстройки, во избежание конфликтов.

 
КАК СОЗДАТЬ НАДСТРОЙКУ
Создать надстройку просто: из любого файла Excel идете в меню:

  • Excel 2010 и новее: Файл (File)Сохранить как (Save As)-Из выпадающего списка «Тип файла» выбрать Надстройка Excel(.xlam) (Excel Add-In(.xlam)) или Надстройка Excel 97-2003(.xla) (Excel 97-2003 Add-In(.xla)).
  • Excel 2007: Кнопка ОфисСохранить как (Save As)-Из выпадающего списка «Тип файла» выбрать Надстройка Excel(.xlam) (Excel Add-In(.xlam)) или Надстройка Excel 97-2003(.xla) (Excel 97-2003 Add-In(.xla)).
  • Excel 2003: МенюСохранить как-Из выпадающего списка «Тип файла» выбрать «Надстройка Excel(.xla)«.
  • Сохранить как

Однако рекомендую не спешить с сохранением файла как надстройки. Сначала следует весь функционал, закладываемый в надстройку, потестировать, отладить и удостовериться, что все работает как предполагалось. Т.к. после сохранения файла как надстройки и открытия надстройки в Excel — закрыть её можно будет только закрыв Excel полностью(конечно, можно еще воспользоваться кодом вроде Workbooks("MyAddin.xla").Close, но это не очень удобно в разработке).
Если все же сохранили файл как надстройку, но хотите что-то изменить в книге(удалить лишние листы, изменить информацию на листах(часто так делается для хранения настроек) и т.п.) — то надо в редакторе VBA найти проект надстройки, перейти в свойства модуля ЭтаКнига(или ThisWorkbook) и выставить IsAddin = False. Книга отобразиться. Далее надо будет вернуть свойство IsAddin в True и сохранить проект
Так же следует заранее выбрать формат надстройки — для версий Excel 97-2003(.xla) и или только от 2007(.xlam) и выше. Надстройки .xla работают во всех версиях Excel, в том числе и в 2007 и выше. Это, пожалуй, единственное их преимущество перед форматом .xlam. Т.к. при этом все меню, которые будут созданы для вызова кодов, в версиях от 2007 и выше будут располагаться на вкладке «Надстройки» и будут иметь минимум настроек: нет возможности изменить размер значка; разбить на группы; сделать красивые подсказки; расположить в два ряда и т.п.
Для формата .xlam доступен более широкий ассортимент: они могут так же создать меню на вкладке «Надстройки», а могут и создавать собственные вкладки(через XML-схемы), команды на которых можно расположить в соответствии со всеми красивостями и достоинствами оформления, которое можно наблюдать в Ribbon-панелях Excel 2007 и выше.
Дальше я как раз более подробно расскажу про оба метода создания меню.

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

'---------------------------------------------------------------------------------------
' Procedure : Test
' DateTime  : 11.08.2014 12:08
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Записываем в активную ячейку число 10
'             красим в красный цвет заливку
'             устанавливаем границы
'---------------------------------------------------------------------------------------
Sub Test()
    With ActiveCell
        .Value = 10
        .Interior.Color = vbRed
        .Borders.Color = vbBlack
    End With
End Sub

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

 
СОЗДАНИЕ СОБСТВЕННОГО МЕНЮ НАДСТРОЙКИ ДЛЯ ВЕРСИЙ EXCEL 2003

Примерный вид данного меню в Excel 2003:
Панель в Excel 2003
Примерный вид меню в Excel 2007 и выше:
Меню в Excel 2007 и выше

Собственно, меню, совместимое со всеми версиями Excel делается исключительно на уровне VBA следующим кодом:

'---------------------------------------------------------------------------------------
' Module    : ЭтаКнига
' DateTime  : 11.08.2014 12:13
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : 
'---------------------------------------------------------------------------------------
Option Explicit
'константа уровня модуля - имя меню
'Обязательно задать, чтобы можно было идентифицировать
Const sMenuBarName As String = "Test Addin www.Excel-VBA.ru"
 
'---------------------------------------------------------------------------------------
' Procedure : Workbook_BeforeClose
' Purpose   : Процедура выполняется перед закрытием книги
'             удаляем созданное меню после закрытия надстройки
'---------------------------------------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next ' обработчик ошибки нужен, если меню такого нет
    'удаляем меню, для исключения дублирования меню при повторном запуске
    Application.CommandBars(sMenuBarName).Delete
End Sub
 
'---------------------------------------------------------------------------------------
' Procedure : Workbook_Open
' DateTime  : 11.08.2014 12:39
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Процедура создания меню
'             как отдельная панель для 2003
'             на вкладке "Надстройки" для 2007 и выше
'---------------------------------------------------------------------------------------
Private Sub Workbook_Open()
    On Error Resume Next ' обработчик ошибки нужен, если меню такого нет
    'удаляем меню, для исключения дублирования меню при повторном запуске
    Application.CommandBars(sMenuBarName).Delete
    On Error GoTo 0
    'добавляем меню
    With Application.CommandBars.Add(sMenuBarName, temporary:=True)
        'добавляем новую кнопку
        With .Controls.Add(Type:=1) 'добавляем обычную кнопку на панель
            'отображаемый текст кнопки
            .Caption = "ИЗМЕНИТЬ СВОЙСТВА АКТИВНОЙ ЯЧЕЙКИ"
            'стиль кнопки
            'доступные стили:
            '1 - только значок(16x16)
            '2 - только текст
            '3 - картинка и текст
            .Style = 3
            'назначаем картинку из набора офиса
            'посмотреть доступные можно: http://www.excel-vba.ru/general/moi-nadstrojki/panel-ikonok-faceid/
            .FaceId = 2
            'имя процедуры, которая будет выполнена при нажатии кнопки
            .OnAction = "Test"
        End With
        'делаем меню видимым
        .Visible = True
    End With
End Sub

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

  • Свойство Type
    .Controls.Add(Type:=1)
    Наверное, самое важное свойство. Оно отвечает за тип элемента меню. Доступно всего пять типов:

    • 1Button(обычная кнопка)
    • 2TextBox(текстовое поле с возможностью записи в него значений и считывания значений из него)
    • 3List(выпадающий список с заранее заданным списком значений)
    • 4ComboBox(выпадающий список с возможностью записи в поле произвольного значения)
    • 10PopupMenu(выпадающее меню с возможностью добавления новых элементов)
  • Иногда возникает вопрос: как сделать на такой панели ToggleButton? Т.е. кнопку, которая при нажатии остается в нажатом состоянии, а при повторном нажатии — в отжатом(т.е. в обычном). В данном случае это возможно исключительно через «финты» вызываемой по нажатию кнопки процедуры:

    Sub Add_CmBar()
        With Application.CommandBars.Add("Test ToggleButton", temporary:=True)
            With .Controls.Add(Type:=1)
                .Caption = "ToggleButton"
                .Style = 2
                .OnAction = "Emulate_Toggle"
            End With
            .Visible = True
        End With
    End Sub
    'процедура, которая выполняется при нажатии кнопки "ToggleButton". Меняет видимое состояние кнопки.
    Sub Emulate_Toggle()
        Dim bt As CommandBarButton
        Set bt = Application.CommandBars.ActionControl
        'проверяем текущее состояние кнопки. 
        'если нажата - отжимаем, если отжата - нажимаем
        If bt.State = msoButtonDown Then
            bt.State = msoButtonUp
        Else
            bt.State = msoButtonDown
        End If
    End Sub

    Еще одна проблема при разработке таких панелей: невозможность явно указать кнопку в стиле Caption(т.е. неактивную к нажатию кнопку). Это тоже можно сделать при помощи обычной Button, только в свойствах кнопки надо свойство Enabled установить в False:
    .Enabled = False
    при этом обязательно необходимо указать Style 2 и назначить Caption.

  • Свойство Style
    .Style = 3
    данное свойство управляет видом кнопки. Доступные стили:

    • 1 — только значок(16×16). Необходимо указывать свойство FaceID
    • 2 — только текст. Свойство FaceId может быть указано, но никак не влияет на внешний вид кнопки
    • 3 — картинка и текст. Обязательно указывать хотя бы одно из свойств: Caption или FaceID

    Если хотите отобразить просто значок или значок вместе с текстом — то столкнетесь с проблемой выбора значка. Поэтому я давно создал надстройку, которая позволяет просмотреть все ID всех доступных значков офиса: Панель иконок FaceID.
    Так же можно и свои значки создавать, однако я не буду здесь затрагивать эту тему, т.к. получится запутанно и обширно. Если кратко: необходимо создать свой значок размером 16×16, с расширением .gif. Затем создать копию иконки и предполагаемые непрозрачные области закрасить черным, а прозрачные — белым. Эту копию необходимо задать для свойства .Mask

  • Свойство OnAction:
    .OnAction = «Test»
    Данная строка отвечает за назначение процедуры, которая будет выполнена после нажатия на кнопку(в случае с ComboBox и TextBox — изменение значения. Вызван код будет после выхода из режима редактирования элемента). Test — это имя процедуры. Её я привел выше и именно она будет выполнена при нажатии на эту кнопку.

Положение CommandBar на панели
Так же у объекта CommandBar есть такие свойства как .Left(положение относительно левого края окна Excel) и .Top(положение относительно верхнего края окна Excel), которые задают положение строки меню на панели. Но они мало актуальны для версий 2007 и выше, т.к. там для таких панелей отведена отдельная вкладка и все они помещаются на ней в том порядке, в котором были на неё добавлены. По умолчанию, если данные свойства не заданы — в 2003 Excel панель создается плавающая и пользователь может переместить её в любое удобное для него место. Если же они указаны, то панель будет расположена в заданных координатах относительно окна Excel.

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


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

  1. надо указывать конкретное имя меню, в которое добавляем некую кнопку. Для контекстного меню ячеек это «Cell»:
    Application.CommandBars(«Cell»)
  2. лучше указывать положение элемента относительно уже существующих в меню. Делает это при помощи указания параметров before или after:
    Application.CommandBars(«Cell»).Controls.Add(Type:=1, before:=4)

При этом добавить можно как собственные кнопки, так и уже существующие. Для примера добавим одной кнопкой дубль нашей команды с лены «ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ», а второй — вставку в ячейку только значений(встроенная команда — подробнее в статье: Как удалить в ячейке формулу, оставив значения?):

    '=========================================================
    '
    '  ДОБАВЛЯЕМ СВОЙ ПУНКТ В МЕНЮ ПРАВОЙ КНОПКИ МЫШИ
    '
    With Application.CommandBars("Cell")
        'дублируем кнопку "ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ" с панели
        'добавляем перед 4-м элементом
        With .Controls.Add(Type:=1, before:=4)
            .Caption = "ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ"
            .Style = 3
            .FaceId = 2
            .OnAction = "Test"
        End With
        'добавляем кнопку встроенной в Excel команды "Вставить значения"
        'ищем команду "Вставить значения" по её ID в контекстном меню
        Set cbb = .FindControl(ID:=370)
        'удаляем команду из меню, если она была уже добавлена ранее
        If Not cbb Is Nothing Then
            cbb.Delete
        End If
        'добавляем перед 5-м элементом(после наше собственной команды)
        .Controls.Add ID:=370, before:=5
    End With

Скачать пример:

  Надстройка для Excel 97-2003 и выше.zip (22,6 KiB, 3 080 скачиваний)


 
СОЗДАНИЕ СОБСТВЕННОГО МЕНЮ НАДСТРОЙКИ ДЛЯ ВЕРСИЙ EXCEL 2007
Как я уже писал — для Excel 2007 и выше подходит описанный выше метод создания собственного меню для ранних версий. Однако меню в данном случае помещается исключительно на вкладку «Надстройки» и имеет довольно убогий вид (как можно лицезреть выше) в сравнении с общим Ribbon-интерфейсом других панелей. Чтобы посмотреть как это выглядит можете просто скачать файл выше и запустить его. Появится вкладка «Надстройки» с одной кнопкой.

Однако учитывая появившуюся в 2007 версии офиса возможность кастомизировать ленту Ribbon через язык XML, гораздо практичнее(особенно для разработчиков) создавать собственную панель с отдельным именем, на которой можно разместить красиво команды, добавить свои собственные значки для команд без особых усилий.

Примерно так можно все это оформить:
Меню в Excel 2007 через XML

Чтобы добавить свою панель необходимо изменить XML-схему для надстройки, которая присутствует в любом файле формата 2007. Есть несколько методов(я опишу лишь два).

Первый метод

, он же совсем неудобный и требует навыков работы с XML

  1. Изменить расширение файла с .xlam на .rar или .zip и открыть любым архиватором.
    Если не отображается расширение:
    Панель управленияСвойства папки(для Win 7 — Параметры папок)- вкладка Вид— Снять галочку с «Скрывать расширение для зарегистрированных типов файлов»
  2. Добавить в архив папку «customUI», папку «_rels» и папку «images»
  3. Создать файл «customUI.xml», который лично я бы назвал основным — в нем необходимо впоследствии прописать все панели и команды по законам языка XML. После чего данный файл необходимо поместить в папку «customUI»
  4. В папке «images» будут храниться все значки, которые будут расположены на панели
  5. Папка «_rels» должна внутри содержать файл «customUI.xml.rels», в котором перечисляются связи картинок с командами и панелями. Проще говоря — схема взаимосвязей ресурсов

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

 
Второй метод куда практичнее — использовать специальные программы для работы с Ribbon итерфейсом. Такие как Office Ribbon Editor, RibbonXMLEditor, OpenXML package editor и им подобные. Я сам использую для этих целей надстройку Максима Новикова — RibbonXMLEditor, последнюю версию которой можно скачать по адресу: http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm. На том же сайте можно найти примеры работы с Ribbon-панелью офиса и более подробно почитать про создание своих панелей. Я бы даже рекомендовал это сделать, если планируете создавать подобные файлы. Сама же программа RibbonXMLEditor бесплатна и не требует установки. Но функционал весьма достойный, а использование достаточно простое. Я не буду заострять внимание на всех нюансах работы с ней — все это можно найти на сайте её создателя(что я лично категорично рекомендую). Опишу лишь основное, что может потребоваться.
Для начала работы и создания своего меню необходимо открыть программу RibbonXMLEditor и выбрать в ней файл, в который хотите внедрить меню. Это должен быть файл формата .xlsm,.xlam или .xlsb. Т.к. мы создаем надстройку — наш формат .xlam.
На рисунке отмечены цифрами шаги, расписанные ниже:
RXE
1. Добавляете ribbon (нажатием кнопки на элементе)
2. Далее tabs и tab(так же автоматом добавится элемент groupe) — выделяете строку и внутрь кавычек для id вписываете groupe_1, а для label вписываете имя вкладки — Свойства ячейки.
3. Уже после этого внутрь groupe добавляете button и задаете ей id — change_cell. Должен получится такой код:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

Id каждого элемента должно быть уникальным и предпочтительнее указывать его исключительно на латинице(англ.алфавит), т.к. кириллица распознается с трудом и есть шанс получить ошибку.
Теперь продолжаем добавлять свойства для button:
4. для начала подгружаем картинку через соответствующую кнопку.
5. После этого она будет в выпадающем списке правее.
6. Ставим курсор после «change_cell» и нажимаем кнопку вставки тега изображения. Вставляется тег и название. Теперь у нашей кнопки есть картинка.
7. При помощи выпадающего меню параметров выбираем label и вставляем данный тег кнопкой, расположенной правее выпадающего списка. Курсор автоматически будет помещен внутрь кавычек. Вписываем текст — Изменить свойства ячейки.
8. При помощи выпадающего списка функций обратного вызова выбираем onAction и так же вставляем. Вписываем туда имя вызываемой процедуры — CallTest.
В результате должно получиться:

<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

Для отладки схемы через RibbonXMLEditor можно использовать кнопку отладки(зеленый треугольник) или сочетание клавиш F9. Для проверки корректности схемы — зеленая галочка. Жмем на неё и если в схеме будут ошибки — они сразу будут найдены и показаны в сообщении, с указанием номера строки и столбца, в которых ошибка.

На этом, казалось бы, все. Но нет. Просто так, сама по себе XML-схема не вызовет процедуру — необходимо создать функции обратного вызова. Вот здесь у RibbonXMLEditor есть еще одна отличная функция — генерация модуля обратных вызовов — 9. Нажимаем на кнопку — получаем готовые функции. Как правило верхние две строки не нужны — нам нужны лишь сами функции:

Sub CallTest(control As IRibbonControl)
 
End Sub

Копируем. Сохраняем схему нажатием дискеты в RibbonXMLEditor и закрываем программу.
Теперь открываем наш файл и вставляем скопированный текст функции. В эту функцию прописываем вызов нашей, уже созданной ранее процедуры: Test

Sub CallTest(control As IRibbonControl)
    Call Test
End Sub

В принципе, можно и прямо в эту процедуру прописать все действия из процедуры Test.
Сохраняем.
Открываем наш файл — видим, что новая вкладка «Test excel-vba.ru» появилась, кнопка на ней есть. По нажатии на кнопку выделенная ячейка окрашивается в красный цвет, в ней прописывается значение 10 и создаются границы.

 
Так же можно вставлять на свою вкладку встроенные команды. Для этого в button используется не id, а idMso. Эти команды не нуждаются в обработке обратных вызовов, т.к. при их использовании происходит вызов встроенных функций — кнопки как бы просто дублируются на нашу вкладку со всеми их возможностями. Например, чтобы добавить на свою вкладку стандартную кнопку перехода в VisualBasic надо добавить кнопку с idMso VisualBasic:

<button idMso="VisualBasic" />

Сам код при этом будет выглядеть так:

<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
                                        <button idMso="VisualBasic" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

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


Так же как и в случае с надстройками для 2003 Excel, здесь можно создавать кнопки в контекстном меню(правая кнопка мыши), но и тут не обошлось без нюансов:

  1. изменение данного меню доступно только начиная с версии Excel 2010. Для 2007 версии придется использовать старые методы — те же, что и для 2003(т.е. внедрение отдельного кода на Workbook_Open надстройки, как в примере выше для надстройки 2003)
  2. в надстройке Ribbon XML Editor я не нашел встроенного инструмента для вставки кодов обработки меню правой кнопкой мыши. Похожий по «звучанию» contextualTabs не совсем то, что нужно(а если быть точнее — совсем не то). contextualTabs — это динамические вкладки, которые появляются после основных вкладок при работе с определенными объектами. Например, с умными таблицами. Когда выделяем умную таблицу или любую ячейку в ней, то появляется группа динамических вкладок «Работа с таблицами». Вот в неё и вносятся изменения при помощи contextualTabs

Поэтому прописывать «добавки» в меню по правой кнопке мыши придется самостоятельно. Код вставки уже имеющегося у нас кода приведен ниже:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
	<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
                                        <button idMso="VisualBasic" />
				</group>
			</tab>
		</tabs>
	</ribbon>
 
	<contextMenus>
		<contextMenu idMso="ContextMenuCell">
			<button id="change_cell_context" 
					image="table_edit" 
					label="Изменить свойства ячейки" 
					onAction="CallTest" 
					insertBeforeMso="Cut" />
		</contextMenu>
	</contextMenus>
</customUI>

добавлять его надо исключительно на вкладке 2010, 2013(customUI14.xml) внизу редактора Ribbon XML Editor. Обращаю внимание, что код создания собственной вкладки на панели дублируется: он должен присутствовать и в 2007(customUI.xml) и в 2010, 2013(customUI14.xml). Это необходимо сделать, чтобы в 2007 Excel была только вкладка, а начиная с 2010 — еще и контекстное меню(схемы customUI.xml и customUI14.xml обрабатываются отдельно друг от друга в зависимости от того, в какой версии открыт файл). При этом в 2007 это никаких ошибок не вызовет.
Остальные правила для создания элементов меню точно такие же, как и для вкладок: можно добавлять как собственные команды, так и встроенные(при помощи idMso).
Я сам предпочитаю контекстное меню дополнять исключительно кодом VBA, т.к. для 2007 его в любом случае придется писать.

Скачать пример надстройки для 2007 Excel

  Надстройка для Excel 2007 и выше.zip (14,6 KiB, 3 402 скачиваний)

В примере я не стал делать много кнопок и их обработку — слишком уж много различных элементов там доступны и для раскрытия всего функционала этой статьи не хватит. Да и в интернете уже полно статей с разбором работы с XML-интерфейсом новых версий Excel. Основной упор сделан на создание основной вкладки и контекстного меню, т.к. техника создания контекстного меню уж очень не очевидна из надстройка Ribbon XML Editor.

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


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Отображение вкладки «Разработчик»

  1. На вкладке файл выберите Параметры> Настройка ленты.
  2. В разделе Настройка ленты в списке Основные вкладки установите флажок Разработчик.

Как добавить режим разработчика в Excel?

Вкладка Разработчик в Excel

  1. Щелкните правой кнопкой мыши в любом месте на Ленте и нажмите Customize the Ribbon (Настроить ленту).
  2. С правой стороны открывшегося диалогового окна под надписью Customize the Ribbon (Настроить ленту) при необходимости выберите Main Tabs (Основные вкладки) .
  3. Поставьте галочку в ячейке Developer (Разработчик).

Как включить панель разработчика в Excel 2007?

Отображение вкладки «Разработчик» на ленте Microsoft Office Excel 2007/2010: – нажмите кнопку Office –> Параметры Excel; – в открывшемся диалоговом окне Параметры Excel в меню (слева) выберите Основные; – в разделе Основные параметры работы с Excel установите флажок Показывать вкладку «Разработчик» на ленте –> OK.

Как открыть VBA в Excel?

Вставляем код VBA в книгу Excel

  1. Открываем рабочую книгу в Excel.
  2. Нажатием Alt+F11 вызываем окно редактора Visual Basic.
  3. На панели Project-VBAProject кликаем правой кнопкой мыши по имени рабочей книги (в левой верхней части окна редактора) и в контекстном меню выбираем Insert > Module.

Как включить режим конструктора в Excel 2016?

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

Если вкладка Разработчик недоступна, отобразите ее:

  1. Откройте вкладку Файл и выберите пункт Параметры.
  2. В раскрывающемся списке настроить ленту выберите Основные вкладки.
  3. Установите флажок Разработчик.

Как добавить кнопку в Excel?

Добавление кнопки (элемент управления формы)

  1. На вкладке разработчик в группе элементы управления нажмите кнопку Вставить, а затем в разделе элементы управления формынажмите кнопку .
  2. Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. …
  3. Назначьте кнопку макроса, а затем нажмите кнопку ОК.

Где находится разработчик в Excel 2010?

Microsoft Office Excel 2010, 2013, 2016

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

Почему нет вкладки Разработчик в Excel?

Вкладка » разработчик » не отображается по умолчанию, но ее можно добавить на ленту. В меню Word выберите пункт Параметры. Выберите элемент Лента и панель инструментов , > настроить ленту > Основные вкладки. Установите флажок разработчик и нажмите кнопку сохранить.

Как включить VBA в Excel 2007?

Excel

  1. Нажмите кнопку Microsoft Office. , а затем — Параметры Excel.
  2. Выберите Центр управления безопасностью > Параметры центра управления безопасностью > Параметры макросов.
  3. Выберите нужные параметры. Отключить все макросы без уведомления. Выберите этот параметр, если не доверяете макросам.

Как писать макросы в Excel?

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

  1. На вкладке Разработчик в группе Код нажмите кнопку Запись макроса. …
  2. В поле Имя макроса укажите имя макроса. …
  3. Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву.

Где находятся элементы управления в Excel?

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

Где сохраняются файлы Excel?

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

Где Автосохраненные файлы Эксель?

— Зайдите в Файл — Параметры программы, вкладка Сохранение и посмотрите, куда сохраняются файлы — на скриншоте виден путь к нужной папке. Как правило, это папка на диске С.

Понравилась статья? Поделить с друзьями:
  • Мои программы бесплатно excel
  • Мои навыки в excel
  • Мои документы аналог word
  • Мои документы word открываются пустыми
  • Мои данные содержат заголовки excel