Как сделать оболочку для excel

Обновлено: 07.07.2024

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

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

Что такое AppSheet

Платформа AppSheet – одно из популярных средств разработки приложений так называемого низкого кода (LCDP). В отличие от традиционного программирования, где все делается в текстовом редакторе, на языках вроде C++, Python или Java, тут используется специальный графический интерфейс.

В AppSheet приложения собираются как из кубиков – просто и интуитивно понятно. А главное, для этого не требуется каких-то специальных знаний. С помощью платформы можно самостоятельно делать мобильные, планшетные и веб-приложения, используя электронные таблицы и базы данных из Google Drive, DropBox, Office 365 или откуда-то еще.

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

Плюсы и минусы приложений AppSheet

Сначала перечислим плюсы:

AppSheet – кроссплатформенный, и это удобно

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

Создаем приложение за 8 шагов

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

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

Шаг 1: создаем данные

Какого рода должны быть данные? На самом деле любые. Давайте представим,что у нас B2B компания, которая продает свои услуги другим предприятиям. Поэтому создадим для нашей CRM таблицу с названием компаний-клиентов, адресами их сайтов, e-mail и ссылками на чаты.

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

Наша база компаний для CRM

В дальнейшем нам понадобятся еще данные. Чтобы не запутаться, будем создавать их не сразу, а по мере необходимости.

Шаг 2: создаем приложение

Заходим на официальный сайт AppSheet. Регистрируемся и нажимаем Start for free. После того, как выберете подходящее облачное хранилище, открывается выбор из трех категорий приложений. Вкладка Start with your own data позволит создать собственное приложение с нуля. На нее и жмем.

Интерес также представляет вкладка Start with sample app. Она позволяет использовать готовые приложения или просто заглянуть под капот некоторых интересующих вас фич.

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

Наше приложение будет выглядеть так, как показано справа

Обратите внимание на кнопки View и Data. Если их использовать при настройке данных и видов, можно переключаться быстрее. Этот маленький лайфхак сбережет вам кучу времени.

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

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

Шаг 3: разбираемся с ключами

Чтобы работать с AppSheet, нужно понимать принцип работы с ключами базы данных. Если попробовать отредактировать информацию о компании, мы увидим интересную особенность – название нельзя поменять, потому что оно является уникальным ключом. А что если компаний много и в название случайно закралась ошибка?

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

Сейчас название компании – это ключ, но лучше ключом делать уникальное значение

Теперь добавим в базу компаний колонку с уникальными ID. Для этого нужно зайти в нашу Google-таблицу и вставить новый столбец с ID.

Создаем новую колонку ID

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

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

В итоге должна получиться такая колонка:

Но это не все – сейчас программа выдает ошибку. Помните, мы обсуждали, что при добавлении новых данных, приложение ломается? Дело в том, что добавив в Google-таблицу новую колонку, вы не сообщили об этом приложению. Это можно сделать, нажав Data – Column – Regenerate Structure.

Нажмите Regenerate Structure, чтобы обновить данные в вашем приложении

После этого должна появиться новая вкладка ID.

Вкладка ID появилась, теперь настроим ее

Теперь отмечаем новую строчку ID как ключ, а значение Label оставляем там же. Label – это этикетка. Этот параметр помогает распознать название ключа. В данном случае наша этикетка – название компании.

Настраиваем ключ и этикетку, как показано на скриншоте

Раскрываем строку ID и добавляем формулу UNIQUEID() в строчку Initial value. Если этого не сделать при добавлении новой компании, значение ID будет пустым.

Не забываем скрыть ID. Это техническая информация, ее не нужно отображать пользователям. Для этого убираем флажок с Show. Пробуем ввести новую компанию – теперь название можно редактировать.

После присвоения ID появится возможность менять названия

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

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

Шаг 4: добавляем возможность ставить задачи

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

Создадим специальный раздел в нашем приложении. Для этого нам понадобится еще одна таблица с данными.

Создаем таблицу с задачами. Также создаем ID, присваиваем дедлайн

Таблица создана. Разумеется, в ней могут быть любые разделы.

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

Присоединяем данные в приложение. Для этого заходим в раздел Data и жмем Add new table.

Присоединяем новую таблицу с помощью клавиши Add New Table

Выбираем нашу новую таблицу.

Подключаем новую таблицу с задачами

После обновления появится новый раздел.

Открываем вновь созданный раздел с задачами и настраиваем его.

Настраиваем раздел задач

Обязательно выставляем данные значения, чтобы появилась связь между таблицами

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

Теперь на страничке компании можно ставить задачи

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

Если отображение данных вас не устраивает, настройте его

Результат настроек – выглядит уже лучше

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

Шаг 5: добавляем сотрудников

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

Добавляем таблицу в приложение. В данном случае ID – это имя сотрудника. Если имена повторяются, присваиваем каждому свой ID.

Настраиваем типы данных с помощью раздела Type

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

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

Обновляем таблицу в приложении.

Теперь у нас появилась необходимая связь.

Теперь на страничке с задачами появился сотрудник, за которым закреплена задача

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

Часто связь не появляется

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

Обновляем данные с помощью Regenerate Structure во всех таблицах, чтобы решить проблему со связями

Следом сделаем так, чтобы каждый сотрудник видел только свои задачи. Переходим Data – User Settings. Открываем любой раздел, например, Option 1.

Чтобы вход в приложение для сотрудников корректно работал, настроите так же, как показано на скриншоте

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

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

Добавим формулу в Security filter, чтобы настроить отображения данных для конкретных пользователей

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

Теперь высвечиваются только задачи, которые присвоены мне

Шаг 6: настраиваем пользовательский интерфейс

Убираем лишние кнопки из данного вида. Для этого находим строчку Column order и меняем порядок расположения элементов так, как нам нужно.

Настраиваем порядок отображения элементов с помощью Column order

Настраиваем отображения данных наших сотрудников

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

Настраиваем кнопки с помощью раздела Action

Иконки меняем в Display, в разделе icons.

Теперь сделаем так, чтобы выполненные задачи скрывались и, если сегодня дедлайн, высвечивалось бы напоминания. Для этого переходим в Data – Slice и жмем кнопку Add New Slice.

Добавляем Slice, чтобы выполненные задачи скрывались

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

Прописываем формулу для нового Slice

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

Теперь задачу легко скрыть

Чтобы активные и отложенные задачи разделялись в табличном виде, сгруппируем их. Для этого перейдем в вкладку Views меню настройки UX. Найдем там раздел Group by и сгруппируем по статусу задачи.

Группируем данные, как показано на скриншоте

Прописываем формулу, чтобы форматирование заработало

Шаг 7: русифицируем. Добавляем логотип и название

Теперь осталось русифицировать наше приложение. Для этого переходим UX – Localize, там переводим названия.

Изменим логотип. Для этого переходим UX – Brand. Во вкладке App logo прикрепляем ссылку на свой логотип или выбираем системное лого.

Добавляем логотип с помощью раздела App logo

Теперь меняем название приложения. Это делается в разделе Info – Properties. В поле Short name коротко прописываем название. Не старайтесь делать его длинным, оно не поместится на экране телефона.

Назовите приложение в строке Short Name

Шаг 8: устанавливаем на телефон и смотрим, что у нас получилось

Чтобы установить созданное нами приложение на телефон, скачиваем AppSheet в App Store или Google Play. Заходим в него и видим список всех созданных вами приложений, находим там нашу CRM. Переходим в нее и нажимаем в настройках Add Shortcut. Теперь логотип нашего приложения появился на рабочем столе.

Жмем Add Shortcut, чтобы добавить наше приложение на рабочий стол телефона или планшета

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

Подробное представление всегда более информативное

Чек-лист и мануал

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

Цены и тарифы

  • Бесплатный тариф. Доступен весь функционал, а 10 пользователей могут пользоваться бесплатно. Вы сможете без ограничений протестировать любые идеи и создать с ними полностью рабочее приложение.
  • Тариф Premium. Стоит 5 $ за 1 активного пользователя приложения . Подойдет для тех, кто уже протестировал приложение и готов интегрировать его в свой бизнес. Этот план поддерживает все основные функции.
  • Тариф Pro. Стоит 10 $ за 1 активного пользователя приложения. Включает в себя расширенный функционал – NFC и QR сканирование, вывод в магазины Google Play и App Store.
  • Тариф Business. План Business обговаривается с компанией, он нужен для крупных игроков, которые хотят использовать AppSheet. Этот тариф пригодится, если необходимы персональные функции, а также машинное обучение, SQL, различная аналитика.

Вывод: использовать ли AppSheet или нет?

Решать вам. А если что-то непонятно, пишите комментарии, я обязательно постараюсь разобраться и помочь. И конечно же делитесь статьей, если считаете ее полезной.

Готовы увеличить производительность в Excel? Пользовательская панель инструментов может сделать это.

Хорошо сделанный макрос Excel

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

Прикрепление макроса к кнопке

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

Вот как можно начать на вашей пользовательской панели инструментов.

Добавление вкладки на ленту

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

настроить ленту Excel

На следующем экране нажмите Новая вкладка.

Excel новая вкладка ленты

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

переименовать вкладку Excel ленты

Нажмите Хорошо вернуться к таблице.

вкладка макросов Excel

Excel пустая вкладка макросов

Чтобы дать ему некоторую функциональность, давайте разберем несколько основных макросов

Создание макросов

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

Создание макроса времени и даты

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

Макросы Excel для разработчиков

Введите имя макроса Дата и время а затем нажмите Создайте.

Excel создать макрос

Excel откроет редактор Visual Basic. Добавьте следующий код:

как файл с поддержкой макросов, если вы еще этого не сделали, — и возвращайтесь в Excel.

Нажмите макрос в разработчик вкладка еще раз, и на этот раз выделите Дата и время и нажмите Бежать.

макрос запуска Excel

Вы должны увидеть что-то вроде этого:

Создание макроса автозаголовка

Откройте диалоговое окно Macros еще раз, и на этот раз введите имя customheaders и нажмите Создайте.

заголовки клиентов Excel

Введите следующий код под Sub customheaders ():

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

Добавьте эту строку кода внизу:

Это будет применять жирное форматирование

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

Теперь пришло время вернуться в Excel и посмотреть, работает ли наш макрос как надо.

Excel, автозаголовок

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

Теперь еще один макрос.

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

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

Введите следующий код ниже Подчиненная таблица ():

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

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

Сохраните свою работу и вернитесь в Excel, чтобы проверить ее.

электронная таблица Excel

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

Заполнение панели инструментов

Открой макрос вкладку мы создали ранее и щелкните правой кнопкой мыши на ленте. Выбрать Настроить ленту.

Использовать Выберите команды из выпадающее меню и выберите макрос.

Excel выбрать команды из

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

Excel добавить макрос

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

Excel переименовать макрос

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

Excel закончил панель инструментов

Сделайте панель инструментов, которая работает для вас!

Все знают, что Excel — невероятно мощная программа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подбор по имени функции

ЧТО ТАКОЕ НАДСТРОЙКА
Для начала разберемся - что такое надстройка и для чего она нужна.
Надстройка - это файл Excel, имеющий расширение .xla или .xlam(только для 2007 и выше), который по умолчанию открывается как скрытая рабочая книга и может быть подключен к приложению для автоматического запуска вместе с запуском самого приложения. Книга надстройки открывается, но в списке видимых открытых файлов не значится, поэтому нет смысла её там искать. Отобразить такую книгу возможно только кодом.
Есть также и другие виды надстроек - надстройки COM и XLL-надстройки. Но о них я не буду рассказывать, т.к. они разрабатываются не в VBA, а в иных средах программирования
Как правило надстройки используют для распространения программного кода, который будет доступен для любой книги Excel. Т.к. надстройка запускается вместе с приложением - очень удобно хранить в ней коды. Можно создать меню для запуска процедур(об этом ниже) и функции пользователя - созданные в надстройке они доступны в любой открытой книге Excel без ссылок на другую книгу, что несомненно очень удобно. Функции пользователя, прописанные в надстройке для Excel 2007 и выше так же доступны по вводимым начальным символам:

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

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

  • Excel 2010-2013 : Файл (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 , но это не очень удобно в разработке).
Так же следует заранее выбрать формат надстройки - для версий Excel 97-2003(.xla) и или только от 2007(.xlam) и выше. Надстройки .xla работают во всех версиях Excel, в том числе и в 2007 и выше. Это, пожалуй, единственное их преимущество перед форматом .xlam. Т.к. при этом все меню, которые будут созданы для вызова кодов, в версиях от 2007 и выше будут располагаться на вкладке "Надстройки" и будут иметь минимум настроек: нет возможности изменить размер значка; разбить на группы; сделать красивые подсказки; расположить в два ряда и т.п.
Для формата .xlam доступен более широкий ассортимент: они могут так же создать меню на вкладке "Надстройки", а могут и создавать собственные вкладки(через XML-схемы), команды на которых можно расположить в соответствии со всеми красивостями и достоинствами оформления, которое можно наблюдать в Ribbon-панелях Excel 2007 и выше.
Дальше я как раз более подробно расскажу про оба метода создания меню.

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

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

СОЗДАНИЕ СОБСТВЕННОГО МЕНЮ НАДСТРОЙКИ ДЛЯ ВЕРСИЙ EXCEL 2003
Примерный вид данного меню в Excel 2003:

Примерный вид меню в 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)
    Наверное, самое важное свойство. Оно отвечает за тип элемента меню. Доступно всего пять типов:

  • 1 - Button(обычная кнопка)
  • 2 - TextBox(текстовое поле с возможностью записи в него значений и считывания значений из него)
  • 3 - List(выпадающий список с заранее заданным списком значений)
  • 4 - ComboBox(выпадающий список с возможностью записи в поле произвольного значения)
  • 10 - PopupMenu(выпадающее меню с возможностью добавления новых элементов)

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

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

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

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

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

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

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

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

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

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

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

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

На этом, казалось бы, все. Но нет. Просто так, сама по себе 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:

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

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

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

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

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

добавлять его надо исключительно на вкладке 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 его в любом случае придется писать.

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


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

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

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