Создание пользовательского меню в Excel2007

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Файл «ФормированиеМеню.xls» содержит макрос «СоздатьМеню», запуск которого приводит к добавлению к главному меню EXCELа пользовательского меню с именем «СМ», имеющего 2 подменю – «Расчет СМ» и «Инструкция по работе с программой». Активация первого подменю инициирует выполнение макроса «МакросСМ» из файла «МакросыСМ.xls» (функция макроса – в присвоении активной ячейке значения «5»).
Макросы были написаны для работы в EXCEL2003. Эту задачу необходимо запустить на компьютере, где установлен EXCEL2007(я с ним еще не работала). Пробный запуск результатов не дал – пользовательское подменю не появилось. Допускает ли эта версия EXCELа создание пользовательского меню с 5-6 (а, возможно, и более) уровнями вложенности, если да, то как это можно сделать?
Вложенный файл «Макросы.xls» должны быть размещены в каталоге «C:\User\»
Спасибо.
Требуемые файлы - во вложении.
Что-то не получается с вложениями - привожу тексты здесь:

Этот макрос - в файле «ФормированиеМеню.xls»

Sub СоздатьМеню()
Dim cbMenuBar As CommandBar
Dim ГлавноеМеню As String
Dim ТекстВызоваПрограммы As String
Dim ТекстВызоваСправки As String
Dim ИмяДобавляемогоМеню As String
Dim ИмяПрограммы As String
Dim РасчетнаяПрограмма As String
Dim ПрограммаЗагрузкиСправки As String

ГлавноеМеню = "Worksheet Menu Bar"
'Set cbMenuBar = Application.CommandBars("Worksheet Menu Bar")
Set cbMenuBar = Application.CommandBars(ГлавноеМеню)
ИмяДобавляемогоМеню = "СМ"
ТекстВызоваПрограммы = "Расчет СМ"
ТекстВызоваСправки = "Инструкция по работе с программой"
ИмяПрограммы = "МакросыСМ.xls"
РасчетнаяПрограмма = "'C:\User\" & ИмяПрограммы & "'!МакросСМ"
ПрограммаЗагрузкиСправки = "'C:\User\" & ИмяПрограммы & "'!ОткрытьСправку"

With cbMenuBar.Controls
With .Add(Type:=msoControlPopup)
.Caption = ИмяДобавляемогоМеню
With .Controls
With .Add(Type:=msoControlButton)
.Caption = ТекстВызоваПрограммы
.OnAction = РасчетнаяПрограмма
.Visible = True
End With
With .Add(Type:=msoControlButton)
.Caption = ТекстВызоваСправки
.OnAction = ПрограммаЗагрузкиСправки
.Visible = True
End With
End With
End With
End With

End Sub 'СоздатьМеню
'====================================

Этот макрос - в файле «Макросы.xls»

Sub МакросСМ()
ActiveCell.Formula = "=5"
End Sub
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

MS Office 2007 (2010) имеет так называемый ленточный (Ribbon) интерфейс. Его объектная модель совершенно отлична.
Смотрите, например, http://customoffice2007.blogspot.com/20 ... -post.html и далее по ссылкам
Андрей Энтелис,
aentelis.livejournal.com
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Aent, спасибо - попробую.
Попутный вопрос. А можно ли в 2007 добавить к перечню вкладок пользовательскую вкладку, но не средствами VBA, а средствами EXCEL (в 2003 это реализуется через "Настройка" - "Команды" - "Новое меню" и т.д.). Если можно, то как?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Стандартными средствами это можно будет сделать только в 2010 офисе. В 2007 нельзя. Однако есть куча программ решающих эту проблему.
Cм., например, http://wordexpert.ru/page/programma-red ... -2007-2010 (Там правда про Word, но разницы никакой нет.)
и собственно:
http://novikovmaxim.narod.ru/index.htm? ... ribbon.htm
Андрей Энтелис,
aentelis.livejournal.com
Ответить