我写了一个插件,它在安装时添加了其他插件,因为部署一个Addin比部署一大堆插件更容易。
问题:在Bootloader-Addin的End Sub
的{{1}}之后,刚从VBE添加/安装的插件消失,并且不再安装。但它们仍然被添加到插件菜单中。
问题:我可以在每台PC上手动安装每个插件,因为它不是一个很大的数字,但这仍然让我觉得我似乎无法找到错误的线路。我很感激您想到的每一个想法,以帮助我解决这个问题。
Bootloader Addin:
Workbook_AddinInstall()
有趣的事情
安装引导加载程序后如果我按Private Sub Workbook_AddinInstall()
Const aiCount As Integer = 2
Dim ai As AddIn
Dim aiTmp As AddIn
Dim i As Integer
Dim aiPath As String
Dim aiToBeInstalled(1 To aiCount) As String
Dim aiInstalled(1 To aiCount) As Boolean
aiToBeInstalled(1) = "AddIn1.xla"
aiToBeInstalled(2) = "AddIn2.xla"
'AddIn added?
For Each ai In AddIns
For i = 1 To aiCount
If ai.name = aiToBeInstalled(i) Then
Set aiTmp = ai
aiTmp.Installed = True
aiInstalled(i) = True
Exit For
End If
Next i
Next ai
'Add not already added AddIns
For i = 1 To aiCount
If Not aiInstalled(i) Then
aiPath = GetDrivePath(volName:="somevolname", excludeDrives:="D") & _
"hidden\" & aiToBeInstalled(i)
Set ai = AddIns.Add(aiPath, False)
ai.Installed = True
End If
Next i
Set ai = Nothing
Set aiTmp = Nothing
End Sub ' After "End Sub" the addins are still added but not installed.
运行此Sub,则Sub添加插件就好了。并且表现得像你期望的那样。
修改
在F5
正在安装的插件上没有关键的事情,只对菜单进行了一些更改。看到这一点,这真让我困惑。它的行为就好像插件没有与Workbook_AddinInstall
相关联,因此它们不会停留。
结论:这是我可以去的,如果您有任何想法,请告诉我。我目前正致力于解决方法,但我真的想知道为什么这不起作用。
答案 0 :(得分:0)
您需要通过VB编辑器为当前工作簿项目安装加载项。 .Install()方法将在注册表中注册新的GUID(作为COM对象库),但不会保留工作簿引用..
'//Start Code Snippet
'--!!--> This will add the reference to the workbook (on each computer).
'--> if the reference is not already registered it (will/should) take
'--> care of it for you..
Application.VBE.ActiveVBProject.References.AddFromFile :YOUR_FILE_PATH_HERE
'//End Code Snippet
显然,将:YOUR_FILE_PATH_HERE 替换为插件位置的路径...如果有帮助,请告诉我。如果没有,我会有更多技巧。谢谢,Brian。