powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с добавлением меню (Excel VBA)
5 сообщений из 5, страница 1 из 1
Проблема с добавлением меню (Excel VBA)
    #33849296
dan317
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
С VBA не работал раньше, заказ разовый, и вот что-то не могу разобраться. Написал конвертер, отладил, сохранил как add-in (xla). Почему-то не находится макрос, привязанный к пункту меню (Excel).


Код такой :

Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
'------------------------------------------------------------------------------------------------
' Добавление меню при установке add-in (работает нормально) :
Private Sub Workbook_AddinInstall()
  Call AddDIGIMenu
End Sub

' Удаление меню при установке add-in (работает нормально) :
Private Sub Workbook_AddinUninstall()
  Call RemoveDIGIMenu
End Sub

Private Sub AddDIGIMenu()
     Dim cbmCommandBarMenu        As CommandBar
     Dim cbmDemoMenu              As CommandBarPopup
     Dim cbmCommandBarMenuCascade As CommandBarPopup

    ' Clear the way for new menu.
    On Error Resume Next
        Application.CommandBars("Worksheet Menu Bar").Controls("&DIGI Converter").Delete
    ' Identify built-in menu bar to work with.
    Set cbmCommandBarMenu = Application.CommandBars("Worksheet Menu Bar")
    ' Add the new menu.
    With cbmCommandBarMenu.Controls
       Set cbmDemoMenu = .Add(Type:=msoControlPopup, Before:= 3 )
       ' Set caption for new menu.
       With cbmDemoMenu
          .Caption = "&DIGI Converter"
          ' Add single menu item and set properties.
          With .Controls.Add(msoControlButton)
                        .OnAction = "DigiConvert"
                        .Caption = "&Convert active sheet"
                        .Tag = "DigiConv"
           End With
        End With

     End With
End Sub

Private Sub RemoveDIGIMenu()
    On Error Resume Next
        Application.CommandBars("Worksheet Menu Bar").Controls("&DIGI Converter").Delete
End Sub

Public Sub DigiConvert()
' Здесь код  конвертера, опущен за ненадобностью 
End Sub

'------------------------------------------------------------------------------------------------

При клике на менюшку получаю сообщение :
The macro DigiMacro.xla!DigiConvert cannot be found.

При этом DigiMacro.xla находится в \AddIns и успешно установлен. Процедура DigiConvert(), как видно из кода, также имеет место быть. Отсутствие русских букв в названии проверил :) Не пойму, в чём дело.

Заранее спасибо !
...
Рейтинг: 0 / 0
Проблема с добавлением меню (Excel VBA)
    #33849306
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у тебя DigiConvert находится в модуле или в коде книги/листа?
Должен быть в модуле и (необязательно) можно в определении кнопки еще указывать: .OnAction = "Module1.DigiConvert"
...
Рейтинг: 0 / 0
Проблема с добавлением меню (Excel VBA)
    #33849316
dan317
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА у тебя DigiConvert находится в модуле или в коде книги/листа?

Честно говоря, не понимаю этой разницы.
Создал книгу, открыл "Tools"->"Macro"->"Visual Basic Editor", туда этот код и запулил.
Затем сохранил книгу как Add-In (xla).
Как записать код в модуль и что есть модуль ? Извиняюсь за ламерство, первый опыт.
...
Рейтинг: 0 / 0
Проблема с добавлением меню (Excel VBA)
    #33849354
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dan317Создал книгу, открыл "Tools"->"Macro"->"Visual Basic Editor", туда этот код и запулил.
После открытия VBA, в главном меню VBA: Insert->Module.
Слева в дереве VBAProject для твоей DigiMacro.xla будет список модулей типа:
Код: plaintext
1.
2.
3.
4.
5.
VBAProject (DigiMacro.xla)
  + Microsoft Excel Objects
  |    + Sheet1 (Sheet1)
  |    + ThisWorkbook
  + Modules
       + Module1
Если в этом списке делаешь дабл-клик по любому из трех элементов (Sheet1, ThisWorkbook, Module1), то будет открываться отдельное окошко для кода. Первые два это "собственные" модули принадлежащие листу и книге соответсвенно. В них описываются макросы событий листа или книги.
События книги Workbook_AddinInstall и Workbook_AddinUninstall идут естественно в ThisWorkbook.
А функции которые должны быть доступны из любого листа книги или вообще из другой книги (как например в твоем случае с xla) обязательно должны находится в независимом модуле. По умолчанию у него имя Module1.
...
Рейтинг: 0 / 0
Проблема с добавлением меню (Excel VBA)
    #33849493
dan317
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за пояснение, решена проблема !
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с добавлением меню (Excel VBA)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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