Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Добавление сосбственного меню в Головное меню Excel
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
keksm keksm вне форума
Member
 
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.06.2005
По умолчанию Добавление сосбственного меню в Головное меню Excel - 31.03.2006, 19:30

Добрый Вечер. Меня Интерисует возможность добавить пункт в Головное меню Excel при помощи VBA. Подробнее:
В Excel в верхнюю строчку меню необходимо добавить дополнительное меню.

Файл-Правка-Вид-Формат-Сервис-Данные-Окно-Справка

Хочу добавить меню между Сервис и Данные -> Бюджетирование

а также между Окно и Справка добавить меню -> Финансовая модель

Затем чтобы в меню "Бюджетирование" добавились пункты Пример1, Пример2, Пример3.
В меню "Финансовая модель" добавилось Модель1, Модель2, Модель3

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

Код:
        
Application.CommandBars("Worksheet Menu Bar").Add _
Name:="Бюджетирование", MenuBar:=True, temporary:=True
Application.CommandBars("Бюджетирование").Visible = True
В данном примере я не понял что означает
MenuBar:=True, temporary:=True

P.S. Главное чтобы эти дополнительные менюшки при закрытии файла удалялись.
Ответить с цитированием
  (#2 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 31.03.2006, 22:42

Вот один из возможных вариантов создания собственного меню "Финансовая модель" :

Код:
Private Sub Auto_Open()

With Application.CommandBars("Worksheet Menu Bar")
     .Reset: .Protection = msoBarNoProtection
     With .Controls.Add(Type:=msoControlPopup, Before:=10)
          .Caption = "Финансовая модель"
          With .Controls
               With .Add(Type:=msoControlButton)
                    .FaceId = 1643
                    .Caption = "Модель1"
                    .OnAction = "Макрос1"
               End With
               With .Add(Type:=msoControlButton)
                    .Caption = "Модель2"
                    .OnAction = "Макрос2"
               End With
               With .Add(Type:=msoControlButton)
                    .Caption = "Модель3"
                    .OnAction = "Макрос3"
               End With
          End With
     End With
     .Protection = msoBarNoCustomize
End With

End Sub

Private Sub Auto_Close()

With Application.CommandBars("Worksheet Menu Bar")
     .Reset: .Protection = msoBarNoProtection
End With

End Sub
Обратите внимание на то, что данный пример неоднократно восстанавливает первоначальное состояние стандартной панели инструментов "Строка меню листа", что может быть недопустимо, если часть изменений необходимо сохранить.
Ответить с цитированием
  (#3 (permalink)) Старый
keksm keksm вне форума
Member
 
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.06.2005
По умолчанию 03.04.2006, 19:02

Нашел в интернете ещё один вариант создания дополнительного меню

Код:
Sub ass0()
MenuBars(xlWorksheet).Menus.Add Caption:="Финансовая модель"
‘Создание пунктов в выпадающем меню (Финансовая модель)
‘с именами ….
With MenuBars(xlWorksheet).Menus("Финансовая модель").MenuItems
.Add Caption:="Модель1", OnAction:="model1"
.Add Caption:="Модель2", OnAction:="model2"
.Add Caption:="Модель3", OnAction:="model3"
.Add Caption:="-"
.Add Caption:="Создание модели", 
End With

End Sub
Ответить с цитированием
  (#4 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 03.04.2006, 21:26

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

Код:
With MenuBars("Worksheet").Menus.Add _
     (Caption:="Финансовая модель", Before:=10)
     With .MenuItems
          .Add Caption:="Модель1", OnAction:="Макрос1"
          .Add Caption:="Модель2", OnAction:="Макрос2"
          .Add Caption:="Модель3", OnAction:="Макрос3"
          .Add Caption:="-"
          .Add Caption:="Создание модели"
     End With
End With
Код:
With MenuBars("Worksheet").Menus.Add("Финансовая модель", 10)
     With .MenuItems
          .Add "Модель1", "Макрос1"
          .Add "Модель2", "Макрос2"
          .Add "Модель3", "Макрос3"
          .Add "-"
          .Add "Создание модели"
     End With
End With
Ответить с цитированием
  (#5 (permalink)) Старый
keksm keksm вне форума
Member
 
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.06.2005
По умолчанию 13.04.2006, 15:01

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

Можно ли сделать, чтобы добавленное меню отображалось (подгружалось) только при активации данной Книги?
Т.е. если открыто два файла Excel и при активации др.книги (не основной) дополнительное меню скрывалось или выгружалось???

Модуль Эта книга
Код:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)

End Sub
Код:
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

End Sub
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 13.04.2006, 16:13

1. В первом варианте будет, во втором нет.
2. Нет не обязательно, можно использовать необязательный именованный аргумент Temporary:=True в этом случае созданное меню, (равно как и контрол и даже собственная панель инструментов) будет удалено автоматически, но только при закрытии приложения. Именно поэтому, в своём первом примере, я и восстанавливал исходное состояние стандартной панели инструментов "Строка рабочего листа" при закрытии рабочей книги.
3. Можно, для этого достаточно использовать события, которые нужно расположить в модуле ThisWorkbook(ЭтаКнига)

Код:
Private Sub Workbook_Activate()
With Application.CommandBars("Worksheet Menu Bar")
     .Reset: .Protection = msoBarNoProtection
     With .Controls.Add(Type:=msoControlPopup, Before:=10)
          .Caption = "Финансовая модель"
          With .Controls
               With .Add(Type:=msoControlButton)
                    .FaceId = 1643
                    .Caption = "Модель1"
                    .OnAction = "Макрос1"
               End With
               With .Add(Type:=msoControlButton)
                    .Caption = "Модель2"
                    .OnAction = "Макрос2"
               End With
               With .Add(Type:=msoControlButton)
                    .Caption = "Модель3"
                    .OnAction = "Макрос3"
               End With
               With .Add(Type:=msoControlButton)
                    .Caption = "Создание модели"
                    .BeginGroup = True
               End With
          End With
     End With
     .Protection = msoBarNoCustomize
End With
End Sub

Private Sub Workbook_Deactivate()
With Application.CommandBars("Worksheet Menu Bar")
     .Reset: .Protection = msoBarNoProtection
End With
End Sub
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Addon Visio Добавление меню nnget Delphi 0 19.01.2011 10:32
Контекстное меню добавление функции распаковка и архивация данных rain202 Visual C++ 9 14.05.2009 13:12
вызов макроса excel из меню FARа lblblb Visual Basic 3 28.11.2007 16:53
Как методом функции создавать всплываюшее меню вглавном меню программы Slaia WinAPI 8 19.07.2006 17:52
Динамическое меню вызов динамического меню imported_@LeX Delphi 3 31.05.2006 20:03
Как добавить строки в меню в Word, Excel? kminas Visual Basic 11 01.11.2005 15:25
Своё меню в Excel??? korsar Visual Basic 3 27.10.2005 12:36
Вставить свой пункт меню в стандартное контекстное меню IE aabad Visual C++ 0 19.09.2005 18:19
Новое меню в EXCEL AANDREE Visual Basic 1 29.08.2005 20:54
Массив и програмное добавление меню franky Delphi 1 05.04.2005 21:12
Как содать меню, или какая структура нужна для того чтобы меню находилось в первом фр Anonymous DHTML, JavaScript, VBScript 1 29.10.2003 18:45
Добавление кнопок в панель и нструментов и пунктов меню Anonymous Visual C++ 8 27.08.2003 03:35



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов