2013-08-16 34 views
1

我編寫了一個插件,它在安裝時添加了其他插件,因爲部署一個插件比部署一大堆插件更容易。插件在安裝時安裝其他插件不會打開它們

問題:後的Bootloader,加載項,從VBE剛剛添加/安裝插件dissapear的Workbook_AddinInstall()End Sub,而不再被安裝。但是它們仍然被添加到插件菜單中。

問題:我可以在每臺PC上手動安裝每個插件,因爲它不是一個大數字,但是這仍然讓我感到我似乎無法找到錯誤的產品線。我會很感激每一個想法,幫助我解決這個問題。

引導程序加載項:

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. 

一些有趣 安裝,如果我每運行F5本次引導加載程序後,小組增加了加載項就好了。並且表現得像你期望的那樣。

編輯: 有沒有重要的事情叫上正在安裝加載項,只有一些更改菜單的Workbook_AddinInstall。看到這一點,這讓我很困惑。它的行爲就好像插件與Application沒有關聯,所以它們不會留下來。

結論:這是我可以去,如果你有任何想法,請讓我知道。我目前正在研究一種解決方法,但我真的很想爲什麼這不起作用。

+0

有趣。這個過程是否有可能觸發卸載插件的其他事件? –

+0

只有一個插件在它的'Workbook_AddinInstall'內運行代碼 - 我將在今天晚些時候編輯我的答案以添加執行的代碼。 –

回答

0

您需要通過VB編輯器爲當前工作簿項目安裝插件。同的路徑YOUR_FILE_PATH_HERE:本.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 

顯然,更換插件位置...讓我知道,如果這有幫助。如果沒有,我還有其他一些技巧。謝謝,Brian。