Добавить пункт в контекстное меню эксель
Добрый Вечер. Меня Интерисует возможность добавить пункт в Головное меню Excel при помощи VBA. Подробнее:
В Excel в верхнюю строчку меню необходимо добавить дополнительное меню.
Хочу добавить меню между Сервис и Данные -> Бюджетирование
а также между Окно и Справка добавить меню -> Финансовая модель
Затем чтобы в меню "Бюджетирование" добавились пункты Пример1, Пример2, Пример3.
В меню "Финансовая модель" добавилось Модель1, Модель2, Модель3
В Интернете нашел пример, но он выдает ошибку.
Подскажите, а лучше разместите пример.
В данном примере я не понял что означает
MenuBar:=True, temporary:=True
P.S. Главное чтобы эти дополнительные менюшки при закрытии файла удалялись.
Вот один из возможных вариантов создания собственного меню "Финансовая модель" :
Обратите внимание на то, что данный пример неоднократно восстанавливает первоначальное состояние стандартной панели инструментов "Строка меню листа", что может быть недопустимо, если часть изменений необходимо сохранить.Нашел в интернете ещё один вариант создания дополнительного меню
То, что вариантов может быть несколько я говорил, но вот попробуйте-ка создать вторым способом значок для кнопки … да и сам примерчик можно упростить, например :
Появился дополнительный вопрос.
Будет ли удалятся добавленное меню после закрытия файла?
Необходимо ли программно удалять меню?
Можно ли сделать, чтобы добавленное меню отображалось (подгружалось) только при активации данной Книги?
Т.е. если открыто два файла Excel и при активации др.книги (не основной) дополнительное меню скрывалось или выгружалось.
Модуль Эта книга
1. В первом варианте будет, во втором нет.
2. Нет не обязательно, можно использовать необязательный именованный аргумент Temporary:=True в этом случае созданное меню, (равно как и контрол и даже собственная панель инструментов) будет удалено автоматически, но только при закрытии приложения. Именно поэтому, в своём первом примере, я и восстанавливал исходное состояние стандартной панели инструментов "Строка рабочего листа" при закрытии рабочей книги.
3. Можно, для этого достаточно использовать события, которые нужно расположить в модуле ThisWorkbook(ЭтаКнига)
Чтобы работа с компьютером была удобной, в операционной системе Windows у каждого файла, папки или любого другого объекта есть контекстное меню. Открывается оно кликом правой кнопкой мышки по этому объекту.
Контекстное меню можно настраивать, добавляя и удаляя из него определенные пункты.
Об удалении пунктов читайте здесь. Ниже речь пойдет только об их добавлении в меню.
Чтобы добавить пункт в контекстное меню, необходимо внести изменения в системный реестр Windows. Сделать это можно путем "ручной" правки реестра или при помощи специальных программ (см. последний пункт этой статьи).
Первый способ немного сложный для новичков, но предоставляет более широкие возможности. В статье он рассмотрен максимально подробно. Для лучшего восприятия информация изложена в следующем порядке:
1. Как добавить простой пункт в контекстное меню файла, папки, Рабочего стола, значка "Компьютер" или Корзины;
2. Добавление в меню выпадающего списка из нескольких пунктов;
3. Как добавить пункт или выпадающий список только в меню файлов определенного типа.
1. Добавление в контекстное меню простого пункта
Для внесения изменений в системный реестр необходимо открыть Редактор реестра.
Кратко напомню, как работать в этом редакторе.
Чтобы открыть Редактор реестра нужно на клавиатуре нажать комбинацию клавиш Win+R, в открывшемся окне напечатать или скопировать туда с этой страницы слово regedit , после чего нажать клавишу Enter.
Окно Редактора реестра разделено на две части по вертикали. В левой его части находится проводник. Он предназначен для навигации. Например, чтобы открыть ветку реестра HKEY_CLASSES_ROOT/*/shell, необходимо в проводнике Редактора двойным кликом мышки открыть сначала раздел "HKEY_CLASSES_ROOT", в нем найти и таким же способом открыть раздел "*", а в нем - раздел "shell".
Подробно порядок работы в Редакторе реестра описан в этой статье.
Чтобы добавить пункт в контекстное меню файла, папки, Рабочего стола или любого другого объекта, необходимо открыть Редактор реестра и в соответствующей ветке создать новый раздел с необходимыми параметрами, в которых прописать название пункта, исполняемую им функцию и др.
Непосредственно о порядке создания этого раздела речь пойдет немного ниже. Сначала давайте разберемся, в какой именно ветке реестра его нужно создавать.
Все зависит от того, в контекстное меню какого объекта необходимо добавить пункт. Если это контекстное меню:
• файлов - радел нужно создавать в ветке:
• запоминающих устройств (диски, флешки и др.) - в ветке:
• значка "Компьютер" - в ветке:
• Рабочего стола - в ветке:
• значка "Корзина" - в ветке:
Теперь добавим новый пункт в контекстное меню одного из указанных объектов.
Например, в меню файлов добавим пункт, который будет открывать их в браузере Mozilla Firefox.
Порядок действий:
1. В Редакторе реестра открыть соответствующую ветку.
Поскольку в нашем примере пункт должен появиться в контекстном меню файлов, открываем ветку HKEY_CLASSES_ROOT/*/shell;
2. Создать в ней новый раздел.
С этой целью в проводнике Редактора необходимо щелкнуть правой кнопкой мышки по папке "shell", и в открывшемся списке выбрать "Создать" - "Раздел" (см. изображение). Назвать этот раздел можно как угодно, используя латинские буквы и цифры. Я назвал "Open to Firefox".
3. В новом разделе создать строковый параметр с названием MUIVerb (он определяет название пункта контекстного меню).
Для этого в проводнике Редактора реестра нужно щелкнуть правой кнопкой мышки по созданному разделу (который я назвал "Open to Firefox") и в появившемся списке выбрать "Создать" ⇒ "Строковый параметр" (см. изображение).
Новый строковый параметр появится в правой части Редактора реестра. Нужно присвоить ему название MUIVerb, после чего дважды щелкнуть по нему левой кнопкой мышки.
Затем в нижнем поле открывшегося окна указать словосочетание, которое будет отображаться в контекстном меню, и нажать кнопку ОК. Я написал "Открыть в Firefox" (см. изображение).
Кроме параметра MUIVerb, в созданный раздел аналогичным образом можно добавить еще несколько параметров (не обязательно). В частности:
• строковый параметр с названием Position. Он определяет, в каком месте контекстного меню будет находиться пункт. Ему можно присвоить одно из двух значений: Top (вверху) или Bottom (внизу). Если этот параметр не создавать, пункт будет отображаться в середине контекстного меню.
Я создал параметр Position и присвоил ему значение Bottom.
• строковый параметр с названием Icon. Он определяет, какая иконка будет отображаться в контекстном меню слева от пункта.
В значении этого параметра нужно указать путь к файлу иконки формата .ICO. Можно также указать путь к какой-нибудь программе. В таком случае будет использоваться иконка этой программы.
Поскольку создаваемый мною пункт должен открывать файл в браузере Firefox, я указал в нем путь к файлу этого браузера.
• строковый параметр Extended. Если добавить этот параметр в созданный раздел, пункт контекстного меню станет "скрытым". Чтобы он отображался, перед открытием контекстного меню нужно будет нажать и удерживать клавишу Shift.
Этому параметру не нужно присваивать никакого значения (оставить пустым).
В свой пример этот параметр я решил не добавлять.
4. В проводнике редактора реестра снова щелкнуть правой кнопкой мышки по созданному разделу (в моем случае он с названием "Open to Firefox") и в появившемся списке выбрать "Создать" ⇒ "Раздел".
В нашем разделе появится еще один раздел, которому необходимо присвоить название command.
5. Выделить раздел command в проводнике Редактора реестра (щелкнуть по нему мышкой). После этого в правой части Редактора дважды щелкнуть мышкой по параметру с названием "(По умолчанию)".
Затем в нижнем поле открывшегося окна, в поле "Значение", необходимо указать путь к программе, которая должна открываться создаваемым пунктом контекстного меню.
В моем случае пункт должен открывать файл в окне Firefox, поэтому я прописал путь к этому браузеру.
Важно. Через пробел от пути к программе я добавил метку "%1" (см. изображение). Она указывает на то, что пункт должен не просто запустить программу, но и открыть файл в ее окне (без этой метки пункт будет запускать пустое окно браузера).
Новый пункт контекстного меню создан. У меня он получился таким:
2. Добавление в меню
выпадающего списка из нескольких пунктов
Кроме простых пунктов, в контекстное меню можно добавлять многоуровневые выпадающие списки.
Предлагаю рассмотреть порядок их создания. В качестве примера добавим в меню файлов пункт "Открыть в браузере", из которого будет выпадать список из 5 браузеров (см. изображение).
Порядок действий:
1. В соответствующем контекстном меню создать простой пункт. При наведении на него будет появляться выпадающий список. Действовать при этом нужно так, как описано выше, за исключением п.5 (раздел command создавать не нужно).
То есть, необходимо открыть соответствующую ветку реестра, создать в ней раздел и добавить в него несколько строковых параметров:
• с названием MUIVerb, в значении которого указать название пункта (обязательно);
• с названием Position и значением Bottom или Top (не обязательно);
• с названием Icon и указанием пути к файлу иконки (не обязательно);
Поскольку мне нужно создать выпадающий список в меню файлов, я:
• открыл ветку реестра HKEY_CLASSES_ROOT/*/shell ;
• создал там новый раздел (назвать его можно как угодно, я назвал spisok) ;
• в этом новом разделе создал строковый параметр с названием MUIVerb и значением "Открыть в браузере".
Кроме того, чтобы пункт находился внизу, я создал в этом разделе строковый параметр с названием Position и значением Bottom.
2. Кроме перечисленных строковых параметров, в созданном разделе нужно создать еще один строковый параметр и назвать его SubCommands. Этот параметр превращает обычный пункт контекстного меню в выпадающий список.
После создания параметра дважды щелкнуть по нему левой кнопкой мышки и в его значении указать несколько коротких названий (любых), используя латинские буквы и цифры. Количество этих названий должно соответствовать количеству пунктов в будущем выпадающем списке. Записывать их нужно через точку с запятой, без пробелов. Использование нескольких одинаковых названий не допускается.
Поскольку выпадающий список из моего примера должен включать 5 браузеров, я придумал 5 названий: raz1, raz2, raz3, raz4, raz5. Записав их через точку с запятой, я получил следующее: raz1;raz2;raz3;raz4;raz5 (см. изображение).
3. В проводнике Редактора реестра перейти в ветку
В этой ветке для каждого пункта выпадающего списка необходимо создать новый раздел. Создаваемым разделам необходимо присвоить названия, которые были указаны в значении строкового параметра SubCommands (см. предыдущий пункт).
Как помните, в своем примере в параметре SubCommands я указал 5 названий: raz1, raz2, raz3, raz4, raz5. Этими названиями я и назвал 5 новосозданных разделов, см. изображение.
4. В каждом из новосозданных разделов необходимо сделать следующее:
• дважды щелкнуть левой кнопкой мышки по строковому параметру с названием "(По умолчанию)" и в открывшемся окне указать название пункта выпадающего меню (обязательно). В каждом из моих 5 разделов я указал здесь название браузера (raz1 - Firefox, raz2 - Opera, raz3 - Chrom, raz4 - Яндекс.Браузер, raz5 - Safari).
• в каждый из созданных разделов добавить строковый параметр с названием Icon (не обязательно) и указать в нем путь к иконке, которая должна отображаться в контекстном меню рядом с пунктом (точно так же, как и в случае с простым пунктом, см. выше);
• в каждом из созданных разделов создать еще один раздел и назвать его command. В разделе command дважды щелкнуть мышкой по параметру с названием "(По умолчанию)" и в открывшемся окне указать путь к программе, которую должен запускать пункт выпадающего списка.
В каждом из моих 5 разделов здесь я указал путь к соответствующему браузеру. И поскольку пункт должен не только запускать браузер, но и открывать файл в его окне, через пробел от пути я добавлял метку "%1", см. изображение.
Вот и все. В результате у меня получился выпадающий список из 5 браузеров (см. изображение выше).
3. Как добавить пункт
только в меню файлов определенного типа
Иногда возникает необходимость добавить пункт в контекстное меню не всех файлов, а только файлов определенного типа, например, файлов формата .txt или .jpg. Давайте разберемся, как это сделать.
Выше уже говорилось, что для добавления пунктов в контекстное меню абсолютно всех файлов нужно создать соответствующие записи в ветке реестра HKEY_CLASSES_ROOT/*/shell .
Чтобы добавить пункт только в меню файлов определенного типа, необходимо добавить те же записи в другую ветку. Что это за ветка - зависит от типа файла и установленного на компьютере программного обеспечения. На каждом конкретном компьютере она будет другой. Но ее всегда можно определить самостоятельно.
Рассмотрим, как это делается, на примере файла формата .jpg
Порядок действий:
1. В Редакторе реестра открыть раздел HKEY_CLASSES_ROOT, найти в нем папку, название которой соответствует требуемому расширению файла, и выделить ее (один раз щелкнуть по ней левой кнопкой мышки).
Учитывая, что в качестве примера был взят файл .jpg, я нашел и выделил папку с названием ".jpg".
2. В правой части Редактора реестра дважды щелкнуть мышкой по строковому параметру с названием "(По умолчанию)" и посмотреть, что указано в его значении. То, что там указано, является названием папки в разделе HKEY_CLASSES_ROOT, в которую необходимо перейти.
На моем компьютере в значении этого параметра указано "jpegfile". Значит, мне необходимо перейти в ветку HKEY_CLASSES_ROOT/jpegfile
3. Перейдя в указанную папку, необходимо найти в ней раздел с названием "shell". Если такого раздела там нет, его необходимо создать. Этот раздел и есть веткой реестра, в которую необходимо добавлять соответствующие записи для создания пункта контекстного меню.
В моем примере, это ветка HKEY_CLASSES_ROOT/jpegfile/shell
4. Программы для добавления пунктов в контекстное меню
Новые пункты в контекстное меню можно добавлять при помощи программ. Вот названия некоторых из них:
Неспешно продолжаем наши повествования о полезных расширениях для приложений из комплекта Microsoft Office. Рассматриваемый сегодня плагин "Настройка контекстного меню" предназначен для модификации контекстного меню ячейки в табличном редакторе Excel.
С помощью этого плагина можно дополнить стандартное контекстное меню любыми пунктами для работы в текущей сессии Excel, либо сохранить сделанные изменения для постоянного использования. Программа также позволяет восстановить вид контекстного меню по умолчанию.
После распаковки архива необходимо скопировать файл надстройки Rightbtn.xla в папку Microsoft Office, в которой находятся файлы надстроек Excel (например, C:\Program Files\Microsoft Office\Office\Library). Файл справки Rightbtn.hlp необходимо скопировать в папку справочных файлов Windows (как правило, это C:\Windows\Help).
Добавление плагина к Excel
Теперь необходимо подключить надстройку. Для этого после запуска Excel переходим в диалоговое окно "Надстройки", выбрав команду "Сервис -> Надстройки". В открывшемся окне отмечаем строку Rightbtn. Теперь в табличном редакторе появится новая панель "Контекстное меню" с двумя кнопками: одна вызывает диалог настройки, вторая удаляет все добавленные команды из контекстного меню.
Для добавления новых пунктов контекстного меню воспользуйтесь кнопкой "Настройка контекстного меню", расположенной на новой панели инструментов. В результате, откроется одноименное окно. В нем и следует настроить контекстное меню ячейки Excel. В новое меню можно добавить пункты трех типов (им соответствуют вкладки окна "Настройка контекстного меню"): обычные меню, инструменты и всплывающие меню.
В верхнем списке на каждой из этих вкладок выбирается группа или панель инструментов, а ниже указывается конкретный пункт меню, который необходимо добавить в контекстное меню. Для включения выделенного пункта в контекстное меню предназначена кнопка "Добавить". Пункт "Сбросить" позволяет удалить все добавленные пункты. В меню можно добавить разделительную линию, для этого предназначена кнопка "Добавить разделитель".
Настройка контекстного меню
Переключатель в нижней части окна позволяет сохранить созданное контекстное меню для следующих сеансов работы с редактором. Для этого необходимо снять установленную по умолчанию пометку с переключателя "Сохранять новые команды только для текущей сессии Excel".
После завершения настройки необходимо нажать "ОК", и в контекстном меню ячейки будут отображены все добавленные пункты.
Если вы настроили контекстное меню Excel (возможно, с помощью надстройки), после обновления Office вы можете обнаружить отсутствие параметров Создать примечание и Создать заметку.
СОСТОЯНИЕ: ВРЕМЕННОЕ РЕШЕНИЕ
Чтобы устранить эту проблему, сбросьте настроенные контекстные меню с помощью VBA (Visual Basic для приложений).
Чтобы применить временное решение, выполните указанные ниже действия.
Откройте редактор Visual Basic (VBE), нажав клавиши ALT+F11.
Вставьте новый модуль, выбрав Insert (Вставка) > Module (Модуль).
Скопируйте следующий код и вставьте его в пустую область модуля справа:
Нажмите клавишу F5 для запуска кода.
Вернитесь в Excel, нажав клавиши ALT+Q, и убедитесь, что параметры создания примечания и заметки восстановлены.
Если проблема повторяется, можно создать повторно используемую процедуру:
Выполните шаги 1–5, указанные выше.
Сохраните книгу в удобном месте, чтобы быстро открывать ее при необходимости. Или вы можете сохранить процедуру в личной книге макросов Excel, чтобы она была всегда доступна.
Дополнительные ресурсы
Общение с экспертами
Поддержка сообщества
Задавайте вопросы сотрудникам службы поддержки, MVP, инженерам и другим пользователям Excel и находите решения.
Предложение новых функций
Мы будем рады вашим отзывам и предложениям. Вам наверняка есть, что сказать. Поделитесь с нами своими мыслями.
Читайте также: