powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с меню при запуске в 2016 xls созданного в 2003.
1 сообщений из 1, страница 1 из 1
Проблема с меню при запуске в 2016 xls созданного в 2003.
    #40031140
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Есть программа на 2003 созданная как AddIn (1). При её запуске создается некое меню.
Есть еще программа на 2003 созданная как AddIn (2), цель которого открыть AddIn(1) в режиме только для чтения и самой закрыться.

При запуске в 2003 после всего этого остается ексель с новым пунктом в строке меню. Далее открываем файл и из меню с этим файлом работаем. Все ОК.
При запуске этого в 2016-м меню исчезает!

Addin(2) запускается и на открытие висит такой код.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Workbook_Open()
Dim Сервер As Workbook

' открываем Addin(1) 
   Set Сервер = Workbooks.Open(Filename:=ThisWorkbook.Path & "\AddIn1.xls", ReadOnly:=True)
' закрываем AddIn(2)
   ThisWorkbook.Close

End Sub



После открытия AddIn(1) - меню создано, мы видим Надстройки и в нем наше меню.
После закрытия AddIn(2) пункт меню Надстройки исчезает.

При этом
- если до всего этого открыть любой файл xls - меню не исчезает, но при закрытии этого файла меню опять исчезает.
- если просто запустить Addin(1) - меню не исчезает.

Меню создается при открытии книги Addin(1)

Код: vbnet
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
Sub СозданиеМеню()
' Макрос создания пользовательского меню на основе данных листа "ЛистМеню" надстройки
'   Выполяется при открытии книги.
Dim ЛистМеню As Worksheet
Dim ОбъектМеню As CommandBarPopup
Dim ОпцииМеню() As Object
Dim ОпцияПодменю As CommandBarButton
Dim Строка As Integer
Dim УровеньМеню, СледУровень, ПозицияИлиМакрос, Подпись, Разделитель, Иконка, Доступность
    
'   Расположение данных меню
    Set ЛистМеню = ThisWorkbook.Sheets("ЛистМеню")
    
'   Инициализация счетчика строк
    Строка = 2
    
'   Добавляет меню и все вложенные в него элементы
    Do Until IsEmpty(ЛистМеню.Cells(Строка, 1))
        ' Чтение данных очередной строки с листа "ЛистМеню"
        With ЛистМеню
            УровеньМеню = .Cells(Строка, 1)
            Подпись = .Cells(Строка, 2)
            ПозицияИлиМакрос = .Cells(Строка, 3)
            Разделитель = .Cells(Строка, 4)
            Иконка = .Cells(Строка, 5)
            СледУровень = .Cells(Строка + 1, 1)
            Доступность = .Cells(Строка, 6)
        End With
        
        If УровеньМеню = 1 Then
        ' Создание опции меню первого уровня
            Set ОбъектМеню = Application.CommandBars(1). _
                Controls.Add(Type:=msoControlPopup, _
                Before:=ПозицияИлиМакрос, _
                Temporary:=False)
            ОбъектМеню.Caption = Подпись
        ElseIf УровеньМеню = 2 Then
            ' Создание опции меню второго уровня
            If СледУровень = УровеньМеню + 1 Then
            ' Создание подменю
                ReDim Preserve ОпцииМеню(УровеньМеню - 1) As Object
                Set ОпцииМеню(УровеньМеню - 1) = ОбъектМеню.Controls.Add(Type:=msoControlPopup)
            Else
            ' Создание опции
                ReDim Preserve ОпцииМеню(УровеньМеню - 1) As Object
                Set ОпцииМеню(УровеньМеню - 1) = ОбъектМеню.Controls.Add(Type:=msoControlButton)
                ОпцииМеню(УровеньМеню - 1).OnAction = ПозицияИлиМакрос
                If Доступность <> "" Then ОпцииМеню(УровеньМеню - 1).Enabled = False
            End If
            ОпцииМеню(УровеньМеню - 1).Caption = Подпись
            If Иконка <> "" Then ОпцииМеню(УровеньМеню - 1).FaceId = Иконка
            If Разделитель Then ОпцииМеню(УровеньМеню - 1).BeginGroup = True
        Else
            ' Создание опций меню уровней больше второго
            If СледУровень = УровеньМеню + 1 Then
            ' Создание подменю
                ReDim Preserve ОпцииМеню(УровеньМеню - 1) As Object
                Set ОпцииМеню(УровеньМеню - 1) = ОпцииМеню(УровеньМеню - 2).Controls.Add(Type:=msoControlPopup)
            Else
            ' Создание опции
                ReDim Preserve ОпцииМеню(УровеньМеню - 1) As Object
                Set ОпцииМеню(УровеньМеню - 1) = ОпцииМеню(УровеньМеню - 2).Controls.Add(Type:=msoControlButton)
                ОпцииМеню(УровеньМеню - 1).OnAction = ПозицияИлиМакрос
                If Доступность <> "" Then ОпцииМеню(УровеньМеню - 1).Enabled = False
            End If
            ОпцииМеню(УровеньМеню - 1).Caption = Подпись
            If Иконка <> "" Then ОпцииМеню(УровеньМеню - 1).FaceId = Иконка
            If Разделитель Then ОпцииМеню(УровеньМеню - 1).BeginGroup = True
        End If
        Строка = Строка + 1
    Loop

End Sub



Чувство такое, что в 2016 надстройка-меню привязывается к какой-то книге и при закрытии книги надстройка так же исчезает

Как сделать, что бы меню не исчезало?

С прогой работают как в 2003, так и в 2016, поэтому переконвертить в формат 2016 нельзя.
AddIn(1) должен запускаться только для чтения.

Господа, Хелп.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с меню при запуске в 2016 xls созданного в 2003.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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