启用的加载项不会超出会话

时间:2014-08-19 15:24:48

标签: vba powerpoint-vba

我有一个PowerPoint加载项("图表生成器" ),当手动启用时(开发人员|加载项|添加新项),加载项在应用程序中仍然存在超出会话期满。即,我可以关闭PowerPoint,稍后重新打开它,然后仍然安装加载项"并且可以使用。

为了便于分发更新,我创建了另一个加载项(" Controller" ),用于检查版本的更新,并在必要时在用户上安装最新版本机等。

控制器从功能区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是一个公共Const,表示图表生成器加载项的ShortName。

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()函数的假阴性?如果是这种情况,我可以做些什么来更改负载的订单,或以其他方式防止这种差异?

1 个答案:

答案 0 :(得分:0)

好的,在我正常的故障排除/调试过程中没多久就弄明白了。发布答案以防其他人有所帮助。

  

在激活时我需要设置加载项的某些属性(我做.Loaded = msoCTrue?

是。确保.AutoLoad = msoCTrue