Excel добавить макрос в ленту
Выставляю на суд читателей свой опыт. Может кому-нибудь пригодится.
Как известно для автоматизации обработки данных в книге, некоторые продвинутые пользователи :) используют самописные макросы.
По умолчанию макросы сохраняются в созданной книге в формате xlsm. Хотя существует возможность сохранять их в «Все открытые книги», «Эта книга», «%название файла%».
Однако если однотипных документов много, а обрабатываются они примерно по одному алгоритму, возникает жгучее желание упростить вызов своих макросов для любого открытого документа.
Можно создать двоичный файл %имя файла%.xlsb(по умолчанию personal.xlsb), со своими макросами, поместить его в «C:\Users\%имя пользователя%\AppData\Roaming\Microsoft\Excel\XLST ART», тогда этот %имя файла%.xlsb , будет загружаться автоматически при открытии Excel2007. Макросы в новых документах можно вызывать через эту автоматически загруженную книгу (удобно назначать макросам быстрые клавиши «типа Ctrl+S»).
Если вас устраивает такое решение можете дальше не читать.
Мы пойдем другим путем :). Мне захотелось вынести кнопки вызова моих макросов на ленту(ribbon) Excel. К сожалению, в Excel 2007 стандартными возможностями вынести кнопки макросов возможно только на панель быстрого доступа. Мне такое решение не понравилось из соображений эстетики :).
Итак, приступим.
Начальные условия:
1. Вы продвинутый пользователь или «круче» :) и знаете что такое: лента Excel, надстройки, VBA, XML. Если нет, рекомендую погуглить эти слова :), так как нет желания возится с картинками и пошагово писать инструкцию типа «нажмите ЛКМ на крестик чтобы закрыть окно, как на рис.1».
2.У меня было: ОС Windows 7, MS Office 2007, Блокнот :), файл с макросами.
3.Естественно, в Excel должна быть правильно настроена безопасность.
Лента Excel, настраивается через XML. Соответственно основные «пляски» будут вокруг этого стандарта.
1. Создаем новую книгу. Для примера назовем ее «empty». Включаем (если нет) на ленте вкладку «Разработчик» («Файл»-> «Параметры Excel» -> «Основные» -> «Показывать вкладку «Разработчик» на ленте»).
2. Сохраняем книгу как %имя будующей надстройки%. xlam(это расширение для надстроек Excel). Для нашего примера empty.xlam. Может вы заметили куда сохранился этот файл? Если нет, то вот стандартный путь к нему «C:\Users\%имя пользователя%\AppData\Roaming\Microsoft\AddIns».
3. Открываем Visual Basic(VB ) (Alt+F11).
5. Для того чтоб макросы вызывались кнопкой с ленты необходимо в него передать параметр (ByVal Control As IRibbonControl). Например:
a. Sub Макрос1 (ByVal Control As IRibbonControl)
b. ‘ текст вашего макроса
c. End Sub
6. Отставляем в сторону Excel :).
7. Как по мне, лучше Norton Commander и нет менеджера в Винде. Но за неимением его запускаем FreeComander, он же нам пригодится для быстрого редактирования и создания файлов. Бежим по пути из п.2, копируем empty.xlam в вашу папку где вы будете курочить этот файл.
8. Как вы устели заметить всякие xml файлики(а *.xlam похоже что он и есть), почти не отличаются от архива, ну по крайней мере архиваторами типа 7-Zip они открываются. Переименовываем empty.xlam в empty.zip. Распаковываем empty.zip в папку empty.
9. Заходим в папку и видим следующую структуру (у меня так, из-за сортировки по имени):
a. Папка «empty»
i.Папка «_rels»
1. .rels
ii.Папка «docProps»
1. app.xml
2. core.xml
iii.Папка «xl»
1.Папка «_rels»
a. workbook.xml.rels
2.Папка «theme»
a. theme1.xml
3.Папка «worksheets»
a. sheet1.xml
b. sheet2.xml
c. sheet3.xml
4. styles.xml
5. vbaProject.bin
6. workbook.xml
iv.[Content_Types].xml
10. Создадим в папке «empty», папку «customui». В «customui» создадим файл customui.xml(можно Блокнотом), со следующим содержимым( без цифр
1.-14., здесь они для нужны для описания):
Описание, по строкам:
1. Тип xml – стандартно.
2. Начало описания ленты (ribbon).
3. Начало описания вкладок.
4. Создание вкладки «MYTAB» с названием «MYTABlabel» которая вставится перед стандартной вкладкой «TabInsert», по русски «Вставка».
5. Создание группы «Group1» во вкладке «MYTAB».
6. Создание кнопки «customButton1» с названием «custombutton1label» размера «large» с вызовом «onAction» =«custombutton1macros1» (вот зачем в макрос надо передавать значение «ByVal Control As IRibbonControl»). Тут надо пояснить, что названия макроса в «onAction» должно совпадать с названиями ваших макросов.
7. Закрываем раздел «group».
8. Тоже что и в п.5 для «group2».
9. Тоже что и в п.6 для «customButton2».
10. Закрываем раздел «group».
11. Закрываем описание вкладки «MYTAB».
12. Закрываем описание вкладОК.
13. Закрываем описание ленты.
14. закрываем описание xml.
11. Сохраняем наш customui.xml
</Relationships> должен стоять в конце файла!
13. Сохраняем отношения :), в смысле .rels
14. Как вы помните :) в п.9 у нас остался файл empty.zip. Открываем его проводником(или другим архиватором, лишь бы архиватор после сохранения изменений в файле не создавал свой формат архива, иначе Excel потом будет ругаться. Этот вариант не исследовался.)
15. В открытом архиве удаляем всё содержимое и вставляем содержимое из папки empty. Содержание empty.zip, после всех манипуляций:
i.Папка «_rels»
1. .rels
ii.Папка «docProps»
1. app.xml
2. core.xml
iii.Папка «xl»
1.Папка «_rels»
a. workbook.xml.rels
2.Папка «theme»
a. theme1.xml
3.Папка «worksheets»
a. sheet1.xml
b. sheet2.xml
c. sheet3.xml
4. styles.xml
5. vbaProject.bin
6. workbook.xml
iv. Папка «customui»
1. customui.xml
v.[Content_Types].xml
16. Переименовываем empty.zip в empty.xlam и копируем в «C:\Users\%имя пользователя%\AppData\Roaming\Microsoft\AddIns». С заменой естественно.
17. Открываем Excel.
18. Включаем надстройку empty. «Файл»-> «Параметры Excel» -> «Надстройки» -> «Перейти» -> «Доступные надстройки» ставим галку напротив empty -> OK.
19. Между вкладками «Главная» и «Вставка» появится вкладка «MYTABlabel», с двумя группами и по одной кнопке в них.
Таким макаром можно добавлять любые стандартные элементы форм на ленту и привязывать к ним макросы. Кнопкам можно присваивать картинки и придумывать всякие украшательства.
Идёшь по этому адресу и получает подробнейшее руководство по работе с кодом RibbonX: Дж.Уокенбах. "Профессиональное программирование на VBA" стр. 687, глава 22. Как пример, покажу свою вкладку. Создал буквально пару недель назад:
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
А вот про ленту - ничего.Можно ли в Excel 2010 добавить кнопку на ленту, и если да - то как?Идёшь по этому адресу и получает подробнейшее руководство по работе с кодом RibbonX: Дж.Уокенбах. "Профессиональное программирование на VBA" стр. 687, глава 22. Как пример, покажу свою вкладку. Создал буквально пару недель назад:
Дата добавления - 26.06.2015 в 13:58
Vostok, cвои вкладки и группы можно создавать и без Джона
Начиная с версии Excel 2010 это стало очень просто:)
Vostok, cвои вкладки и группы можно создавать и без Джона
Начиная с версии Excel 2010 это стало очень просто:)
Автор - Serge_007
Дата добавления - 26.06.2015 в 21:21
И Эта великолепная вкладка будет работать только для этой конкретно взятой книги? Начиная с версии Excel 2010 это стало очень просто:)
И Эта великолепная вкладка будет работать только для этой конкретно взятой книги? Vostok Начиная с версии Excel 2010 это стало очень просто:)
И Эта великолепная вкладка будет работать только для этой конкретно взятой книги? Автор - Vostok
Дата добавления - 27.06.2015 в 08:35 А моя вкладка работает только для Конкретно Взятой Книги и не "мозолит" глаза при открытии других книг. И это очень Удобно! Да, и потом создана она средствами RibbonX и VBA. (Согласно теме данной ветки - "Вопросы по VBA"). А моя вкладка работает только для Конкретно Взятой Книги и не "мозолит" глаза при открытии других книг. И это очень Удобно! Да, и потом создана она средствами RibbonX и VBA. (Согласно теме данной ветки - "Вопросы по VBA"). Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
А моя вкладка работает только для Конкретно Взятой Книги и не "мозолит" глаза при открытии других книг. И это очень Удобно! Да, и потом создана она средствами RibbonX и VBA. (Согласно теме данной ветки - "Вопросы по VBA"). Автор - VostokДата добавления - 27.06.2015 в 08:50
Вряд ли я когда-либо смогу оценить удобство вкладки только для одной книги
Собственно говоря, вкладка на ленте визуально - это одно только название вкладки. Чем и как оно может "мозолить" глаза - мне тоже непонятно
А штатная создается средствами Excel. Процитируйте, пожалуйста, текст топика, в котором автор просит решить задачу средствами RibbonX и VBA
Насчет расположения темы - прочитайте мой комментарий к топикуВряд ли я когда-либо смогу оценить удобство вкладки только для одной книги
Собственно говоря, вкладка на ленте визуально - это одно только название вкладки. Чем и как оно может "мозолить" глаза - мне тоже непонятно
А штатная создается средствами Excel. Процитируйте, пожалуйста, текст топика, в котором автор просит решить задачу средствами RibbonX и VBA
Насчет расположения темы - прочитайте мой комментарий к топику Serge_007Вряд ли я когда-либо смогу оценить удобство вкладки только для одной книги
Собственно говоря, вкладка на ленте визуально - это одно только название вкладки. Чем и как оно может "мозолить" глаза - мне тоже непонятно
А штатная создается средствами Excel. Процитируйте, пожалуйста, текст топика, в котором автор просит решить задачу средствами RibbonX и VBA
Проблемы с отображением видео:
Как добавить вкладку "Разработчик" на ленту?
Вкладка "Разработчик" - очень полезная вкладка меню, но почему-то по умолчанию она скрыта. В этой статье я расскажу, как добавить ее в меню.
Шаг 1
Нажимаем большую круглую кнопку "Office" в левом верхнем углу окна Excel:
Шаг 2
В выпавшем меню, в нижнем правом углу нажимаем кнопку "Пара м етры Excel":
Шаг 3
В открывшемся окне, в разделе "Основные параметры работы с Excel" ставим галочку напротив пункта "Показывать вкладку 'Разработчик' на ленте" и нажимаем "ОК":
В меню должна будет появиться вкладка "Разработчик".
Шаг 1
Нажимаем зеленую вкладку "Файл" в левом верхнем углу окна Excel:
Шаг 2
В открывшейся вкладке, слева выберите пункт "Параметры":
Шаг 3
В открывшемся диалоговом окне, слева выберите пункт "Настройка ленты":
Шаг 4
В открывшейся вкладке, справа, в разделе "Основные вкладки" поставьте галочку напротив пункта "Разработчик" и нажмите "ОК":
В меню должна будет появиться вкладка "Разработчик".
Шаг 1
Нажимаем зеленую вкладку "Файл" в левом верхнем углу окна Excel:
Шаг 2
В открывшейся вкладке, слева выберите пункт "Параметры":
Шаг 3
В открывшемся диалоговом окне, слева выберите пункт "Настроить ленту":
Шаг 4
В открывшейся вкладке, справа, в разделе "Основные вкладки" поставьте галочку напротив пункта "Разработчик" и нажмите "ОК":
Вкладка с инструментами, связанными с VBA Excel, называется «Разработчик». Если этой вкладки нет на вашей ленте, добавьте ее через окно «Параметры»:
- Откройте окно «Параметры» через меню «Файл».
- Выберите вкладку «Настроить ленту».
- В правой колонке установите галочку у пункта «Разработчик» и нажмите «OK».
Кнопка – элемент управления формы
Вставка кнопки на лист
- Выберите вкладку «Разработчик» и нажмите на кнопку «Вставить».
- Нажмите на значок кнопки в коллекции «Элементы управления формы».
- Кликните в любом месте на рабочем листе Excel.
- Откроется окно «Назначить макрос объекту». Нажмите «Отмена», так как макрос для этой кнопки еще не готов.
- После нажатия кнопки «Отмена», на рабочем листе появится новая кнопка из коллекции «Элементы управления формы» в режиме редактирования.
Ухватив мышкой за один из кружочков, можно изменить размер кнопки. Ухватив кнопку за границу, можно перетащить ее в другое место. Также, в режиме редактирования, можно изменить название кнопки прямо на ее поверхности.
Чтобы выйти из режима редактирования кнопки из коллекции «Элементы управления формы», кликните в любом месте на рабочем листе.
Чтобы вернуться в режим редактирования кнопки, кликните по ней правой кнопкой мыши и выберите из контекстного меню нужный пункт. Если вы хотите изменить размер или размещение кнопки перетаскиванием, кликните левой кнопкой мыши в любом месте рабочего листа. После первого клика контекстное меню закроется, а кнопка останется в режиме редактирования.
Создание процедуры для кнопки
Кнопке из коллекции «Элементы управления формы» можно назначить макрос (процедуру), размещенную в стандартном программном модуле.
Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) и перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
Если вы не создавали ранее в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.
Ссылка на модуль появится в проводнике слева. Если модуль создан ранее, дважды кликните по его ссылке в проводнике, и он откроется справа для редактирования.
В открывшемся окне добавления шаблона процедуры оставьте выбранным переключатель «Sub», вставьте в поле «Name» название процедуры «NovayaProtsedura» и нажмите «OK».
В стандартный программный модуль будет вставлен шаблон процедуры «NovayaProtsedura».
Читайте также: