Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с добавлением меню (Excel VBA) / 5 сообщений из 5, страница 1 из 1
12.07.2006, 19:31:53
    #33849296
dan317
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с добавлением меню (Excel VBA)
Здравствуйте.
С 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
12.07.2006, 19:40:45
    #33849306
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с добавлением меню (Excel VBA)
А у тебя DigiConvert находится в модуле или в коде книги/листа?
Должен быть в модуле и (необязательно) можно в определении кнопки еще указывать: .OnAction = "Module1.DigiConvert"
...
Рейтинг: 0 / 0
12.07.2006, 19:48:14
    #33849316
dan317
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с добавлением меню (Excel VBA)
авторА у тебя DigiConvert находится в модуле или в коде книги/листа?

Честно говоря, не понимаю этой разницы.
Создал книгу, открыл "Tools"->"Macro"->"Visual Basic Editor", туда этот код и запулил.
Затем сохранил книгу как Add-In (xla).
Как записать код в модуль и что есть модуль ? Извиняюсь за ламерство, первый опыт.
...
Рейтинг: 0 / 0
12.07.2006, 20:28:57
    #33849354
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с добавлением меню (Excel VBA)
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
12.07.2006, 23:18:17
    #33849493
dan317
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с добавлением меню (Excel VBA)
Благодарю за пояснение, решена проблема !
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с добавлением меню (Excel VBA) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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