Активираната добавка не продължава след сесията

Имам добавка на PowerPoint („Конструктор на диаграми“), която, когато е активирана ръчно (Разработчик | Добавки | Добавяне на нова), добавката продължава да съществува в приложението след изтичане на сесията. Т.е. мога да затворя PowerPoint, да го отворя отново по-късно и след това добавката все още е „инсталирана“ и е достъпна за използване.

За по-лесно разпространение на актуализации създадох друга добавка ("Контролер"), която проверява версията за актуализации и инсталира най-новата версия, ако е необходимо, на потребителски машини.

Контролерът извиква това от обратното извикване на лентата onLoad:

Option Private Module
Option Explicit
Private rib As IRibbonUI
''Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)

    Set rib = ribbon
    Call UPDATE(rib)
End Sub
Private Sub UPDATE(rib)

'Debug.Print ObjPtr(rib)

'1 Check for valid network connection:
    If NetworkConnected Then
'2 Check the add-in already exists:
        If Not AddInExists Then
            If Not DoUpdate Then Exit Sub
        End If
'3 Call procedure to update the PPAM if needed
        If CheckUpdate Then
            Application.Run "ChartBuilder_PPT!AddIn_RibbonExtensibility.RibbonOnLoad", rib

        Else:
            MsgBox "unable to enable the CB ribbon!", vbCritical
        End If

    Else
'4 The user is not connected to the network
Debug.Print "Not connected to JDPA network."

    End If

End Sub

Така че проверяваме дали е свързан към мрежа (пропуск), след което проверяваме дали Add In вече съществува, ако не, тогава подканваме за актуализация. След това, ако да, тогава Контролерът изтегля текущата версия от споделена директория и се активира/инсталира на потребителската машина.

Проблемът е, че когато тази добавка е инсталирана, тя винаги ме отвежда до функцията DoUpdate (която подканва потребителя vbYesNo да актуализира версията).

Тази функция е възпроизведена по-долу и ShortName е публична константа, представляваща краткото име на добавката Chart Builder.

Function AddInExists() As Boolean
Dim a As AddIn
    For Each a In Application.AddIns
        If a.Name = ShortName Then
            AddInExists = True

            Exit For
        End If
    Next
End Function

ВЪПРОС

Има ли някакво свойство на добавката, което трябва да задам, когато я активирам (правя .Loaded = msoCTrue?

Или добавките се зареждат последователно, така че когато Контролерът е зареден, Конструкторът на диаграми не е (все още) и това задейства фалшиво отрицателно на функцията AddInExists()? И ако случаят е такъв, има ли нещо, което мога да направя, за да променя реда на зареждане или по друг начин да предотвратя това несъответствие?


person David Zemens    schedule 19.08.2014    source източник


Отговори (1)


Добре, това не отне много време да разбера по време на нормалното ми отстраняване на неизправности/дебъгване. Публикуване на отговора, в случай че е полезен за други.

Има ли някакво свойство на добавката, което трябва да задам, когато я активирам (правя .Loaded = msoCTrue?

да Уверете се, че .AutoLoad = msoCTrue.

person David Zemens    schedule 19.08.2014