Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel & VB / 3 сообщений из 3, страница 1 из 1
08.10.2005, 07:22:11
    #33312858
AlexSacha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel & VB
Сами мы не кодеры...
Такая задача:
в основное меню нужно поместить категорию "Macros" а в нее две команды - два написанных макроса,
причем это должен делать отдельный макрос, автоматически выполняющийся при открытии данного документа и удаляющий ее (то биш "Macros") после закрытия доки.
Я вот тут с созданием категории немного накодил

Set MyMacros = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, _
Before:=Application.CommandBars("Worksheet Menu Bar").Controls.Count + 1)
With MyMacros
.Caption = "Màcros"
.Controls.Add Type:=msoControlButton
End With

Но как изменить имена команд и присвоить им имена ???

Удаление из меню:

k = Application.CommandBars("Worksheet Menu Bar").Controls.Count
While k > 1
If Application.CommandBars("Worksheet Menu Bar").Controls(k).Caption = "Màcros" Then
Application.CommandBars("Worksheet Menu Bar").Controls(k).Delete
End If
k = k - 1
Wend

Как запускать ЭТОТ кусок при закрытии???
...
Рейтинг: 0 / 0
08.10.2005, 07:51:05
    #33312862
AlexSacha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel & VB
в основное меню нужно поместить категорию "Macros" а в нее две команды - два написанных макроса,
Но как изменить имена команд и присвоить им имена ???

Точнее присвоить не имена а те два макроса и назвать эти команды по именам макросов...
...
Рейтинг: 0 / 0
08.10.2005, 14:24:31
    #33313005
Gerros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel & VB
Рекомендую использовать Addons.

В надстройку добавляем модуль, в модуле пишем что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Public Const MenuCaption = "Мармелад"

Public Menu As CommandBarControl

Sub Menu_AddItem(Menu As CommandBarControl, I_Caption As String, I_OnAction As String)
    With Menu.Controls.Add(msoControlButton, Menu.ID)
        .Caption = I_Caption
        .OnAction = I_OnAction
    End With
End Sub

Sub Menu_Load()
    Set Menu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlPopup)
    Menu.Caption = MenuCaption
    Menu_AddItem Menu, "Отчёт по брэндам", "RTM_Brand_Report"
    Menu_AddItem Menu, "Остатки брэндов", "RTM_Brand_Ostat"
    Menu_AddItem Menu, "Изменения цен после отгрузки", "OrdersPriceHistory"
    Menu_AddItem Menu, "О программе", "Info"
End Sub

Sub Menu_Clear()
    Dim Menu
    For Each Menu In Application.CommandBars("Worksheet Menu Bar").Controls
        If Menu.Caption = MenuCaption Then Menu.Delete
    Next
End Sub

"RTM_Brand_Report", "RTM_Brand_Ostat", "OrdersPriceHistory" - это названия макросов, которые будут выполняться при выборе пункта меню. Макросы тоже описываем в модуле.

В коде книги пишем так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Workbook_Open()
    Menu_Clear
    Menu_Load
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Menu_Clear
End Sub

_____
* powered by Gerros
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel & VB / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]