Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/33: Рейтинг темы: голосов - 33, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 47

Создание нового меню в меню Файл в Excel

23.07.2008, 13:34. Показов 6315. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Небольшое вступление:
я решил сделать надстройку для Excel, при ее установке в меню 'Файл' должен добавиться новый пункт. Здесь все ясно, делаю так:
Visual Basic
1
 Application.CommandBars('File').Controls.Add Type:=msoControlPopup
Но затем в это новое меню должны добавляться команды и вот тут-то и проблема - не могу понять как мне в коде указать в какое меню должна добавиться команда. Если сделать это с помощью макрорекордера то получится вот что:
Visual Basic
1
 Application.CommandBars('Настраиваемое всплывающее меню2').Controls.Add Type:=msoControlButton, ID:=2949
Если использовать этот код то все работает, но не ясно что такое 'Настраиваемое всплывающее меню2'. Это не имя (его для этого объекта задать не удается) и не свойство Caption. Так что же ЭТО и как ЭТО задать.
Кстати из кода следует, что мое меню относится к семейству CommandBars, но среди объектов этого семейства я его не нахожу (также, впрочем, как и 'File').
Помогите советом.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2008, 13:34
Ответы с готовыми решениями:

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

Создание меню (чтобы открывались ссылки на вкладках меню)
есть FAQ?

Создание меню и сохранение в текстовой файл
Добрый вечер! Задали задачу, аналогичную прошлой теме Задание: Создать абстрактный класс CVehicle. На его основе реализовать классы...

5
krosh
24.07.2008, 09:40
Небольшое вступление:
я решил сделать надстройку для Excel, при ее установке в меню 'Файл' должен добавиться новый пункт. Здесь все ясно, делаю так:
Application.CommandBars('File').Controls .Add Type:=msoControlPopup
Но затем в это новое меню должны добавляться команды и вот тут-то и проблема - не могу понять как мне в коде указать в какое меню должна добавиться команда. Если сделать это с помощью макрорекордера то получится вот что:
Application.CommandBars('Настраиваемое всплывающее меню2').Controls.Add Type:=msoControlButton, ID:=2949
Если использовать этот код то все работает, но не ясно что такое 'Настраиваемое всплывающее меню2'. Это не имя (его для этого объекта задать не удается) и не свойство Caption. Так что же ЭТО и как ЭТО задать.
Кстати из кода следует, что мое меню относится к семейству CommandBars, но среди объектов этого семейства я его не нахожу (также, впрочем, как и 'File').
Помогите советом.

значит так:
'Настраиваемое всплывающее меню2' - это имя даденое твоему меню макрорекордером, если тебе не нравится это имя - поменяй его ( CommandBars('Настраиваемое всплывающее меню2').name = 'myMenu' )
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 47
24.07.2008, 10:50  [ТС]
Приветствую.
Спасибо за совет. Действительно, оказалось 'Настраиваемое всплывающее меню2' - это имя и предложенным способом его можно изменить.
Но тут какая-то путаница: объект CommandBarControl не имеет свойства Name это свойство объекта CommandBab, а ведь изначально я создаю именно Control и задать ему имя не получается. Каким образом Control превращается в Bar? И как програмно можно определить какое имя ему присвоено по умолчанию, чтобы затем его изменить? Или есть другой способ?
0
krosh
24.07.2008, 12:00
можно попробовать например так:
Visual Basic
1
2
3
4
CommandBars("file").Controls.Add Type:=msoControlPopup, before:=5
CommandBars("file").Controls(5).caption = 'my popup'
CommandBars("file").Controls("my popup").controls.add type:=msoControlButton
CommandBars("file").Controls("my popup").controls(1).caption = "My button"
0 / 0 / 0
Регистрация: 28.05.2008
Сообщений: 21
24.07.2008, 12:27
Может,что-то поможет:
Public Sub enbled1()
'создает строку по паролю
'Set mybar = CommandBars('VB Custom Bar')
Set myBar = CommandBars.Add(Name:='VB Custom Bar', Position:=msoBarTop, Temporary:=True)
myBar.Visible = True
user = InputBox('Введите пароль')
If user = 'SAM' Then
myBar.Enabled = True
Set myBar1 = myBar.Controls.Add(Type:=msoControlButto n)
With myBar1
.Visible = True
.OnAction = 'Привет'
End With
Else
CommandBars('Visual Basic').Reset
myBar.Enabled = False
End If
End Sub

Public Sub добавление()
'две кнопки
Set myBar = CommandBars('VB Custom Bar')
With myBar
.Controls.Add Type:=msoControlButton, Id:=3
.Controls(1).Enabled = False
.Controls.Add Type:=msoControlButton, Id:=3
End With
myBar.Visible = True
End Sub
Public Sub заголовок()
'создает строку меню Custom и кнопку на ней
Set myBar = CommandBars.Add(Name:='Custom', Position:=msoBarTop, Temporary:=True)
myBar.Visible = True
Set mycontrol = myBar.Controls.Add(Type:=msoControlButto n, Id:=3)
With mycontrol
.DescriptionText = 'Старт Программы поиска опечаток '
.Caption = ' Программа поиска опечаток '
End With
End Sub

Public Sub сброс()
'убирает строку инструментов 'Custom'
For Each bar In CommandBars
Debug.Print bar.Name
If bar.Name = 'Custom' Then
'If (bar.BuiltIn = False) And (bar.Visible = False) Then
bar.Delete
Stop
End If
Next
End Sub

Public Sub сброс_кнопок()
'на VB Custom Bar
For Each bar In CommandBars('VB Custom Bar').Controls
'Debug.Print bar.Name
'If (bar.BuiltIn = False) And (bar.Visible = False) Then
bar.Delete
Stop

Next
End Sub
Public Sub Смена_фасада()
'смена фасада первой кнопки на VB Custom Bar
Set ctrl = CommandBars('VB Custom Bar').Controls(1)
With ctrl
If .Id < 25 Then
.FaceId = 15
.Tag = 'Changed control'
End If
.Enabled = True
End With
For Each ctl In CommandBars('VB Custom Bar').Controls
ctl.Caption = CStr(ctl.Id)
Next ctl
End Sub

Public Sub ID_кнопки()
'вывод ID кнопок меню
For Each bar In CommandBars('VB Custom Bar').Controls
'If bar.Id = 17 Then
Debug.Print bar.Caption, bar.Id, bar.FaceId
'End If
Next
End Sub

Public Sub смена_названия()
'замена названия кнопки её номером
For Each ctl In CommandBars('VB Custom Bar').Controls
ctl.Caption = CStr(ctl.Id)
Next ctl

End Sub

Public Sub добавка()
'добавляет кнопку к VB Custom Bar
Set myBar = CommandBars('VB Custom Bar')
Set mycontrol = myBar.Controls.Add(Type:=msoControlButto n)
With mycontrol
.FaceId = 2
.OnAction = 'MySub'
End With
myBar.Visible = True

End Sub

Public Sub добавка_к_меню()
'добавляет пункт к активному меню с подсказкой и началом группы
Set mymenubar = CommandBars.ActiveMenuBar.Controls.Add(T ype:=msoControlButton)
With mymenubar
.Visible = True
.TooltipText = 'сделал пункт меню'
.Style = msoButtonIconAndCaption
.BeginGroup = True
.FaceId = 6
.Caption = 'наконец-то'
.State = msoButtonMixed
End With
End Sub

Public Sub кнопки()
'если есть встроенный фасад на кнопке , то копирует в буфер
Set mycontrol = CommandBars('VB Custom Bar').Controls(1)
With mycontrol
If .BuiltInFace = True Then
.CopyFace
End If
.State = msoButtonDown
End With

End Sub

Public Sub уборка_кнопок()
'уборка пользовательских кнопок
For Each ctl In Command
0
0 / 0 / 0
Регистрация: 23.07.2008
Сообщений: 47
24.07.2008, 13:06  [ТС]
Приветствую.
Спасибо всем. Действительно
Code
1
2
3
...
CommandBars('file').Controls('my popup').controls.add type:=msoControlButton
...
это выход!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2008, 13:06
Помогаю со студенческими работами здесь

Создание меню и сохранение в текстовой файл
Добрый вечер!

Как убрать строку меню ' Файл Правка Вид ...' в Excel?
Пожалуйста!!! 1. Как убрать строку меню ' Файл Правка Вид ...' в Excel 2. Как закрыть форму при нажатии кнопки ESC

Работа с меню. При клике на кнопке меню или вне его, меню должно закрываться
Добрый вечер! Изучаю JQuery. Вот ради развития решил написать меню, практически такое же как на Хабре. Два дня ломаю голову над тем, как...

Как добавить выплывающее меню к уже готовому горизонтальному меню (не меняя дизайн горизонтального меню)?
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt; &lt;html...

Раскрывающееся меню - при открытии/закрытии вложенного меню закрывается все меню
Проблема во вложенном меню. При открытии/закрытии вложенного меню закрывается все меню. Надо, чтобы главное меню не реагировало на клики во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru