我有一个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()
函数的假阴性?如果是这种情况,我可以做些什么来更改负载的订单,或以其他方式防止这种差异?
答案 0 :(得分:0)
好的,在我正常的故障排除/调试过程中没多久就弄明白了。发布答案以防其他人有所帮助。
在激活时我需要设置加载项的某些属性(我做.Loaded = msoCTrue?
是。确保.AutoLoad = msoCTrue
。