2012-09-30 45 views
2

我已經爲Excel (Office 2011, Mac)寫了兩個VBA加載項:第一個「基本」加載項也爲第二個加載項提供了函數。還會有其他插件在將來使用基本插件的功能...... 應該可以運行基本插件,第二個插件是可選的。以編程方式添加引用會給出運行時錯誤

在第二個插件,我嘗試添加這樣的引用:Run-time error 91: Object variable or With block variable not set.

當我打開VBA編輯:

Public Sub Workbook_Open() 
    Application.VBE.VBProjects("SecondAddin").References.AddFromFile ("BasicAddin.xlam") 
    UseFunctionFromBasicAddin 
End Sub 

Private Sub UseFunctionFromBasicAddin() 
    FunctionFromBasicAddin 
End Sub 

但是,從Excel中,當這給了我一個運行時錯誤在這個錯誤之後,我可以看到BasicAddin.xlam現在在SecondAddin中被正確地引用了 - 當我在VBA編輯器中執行UseFunctionFromBasicAddin()時,它可以正常工作。啓動Excel時它不起作用。

當添加在VBA編輯器(工具 - >引用)的參考,這兩個插件加載,但有一個MsgBox: "This workbook is currelty referenced by another workbook and cannot be closed."

不過,我希望通過編程添加引用,因爲我懷疑鏈接在具有不同路徑的不同計算機上使用插件時會中斷嗎?

我很樂意提供有關如何擺脫運行時錯誤的建議(或者是否有更好的管理不同加載項的方法?)...!

回答

0

我不認爲有可能修改當前工作簿的VBA項目引用。

這是一個ozgrid鏈接,講述如何刪除損壞的引用,他說要以編程方式執行此操作,您必須從另一個工作簿執行此操作。

http://www.ozgrid.com/forum/showthread.php?t=23866

芭芭拉嗨,

1參考ISMISSING被添加到工作簿VB項目引用。 (每如若本身不是一個問題,除非你通過代碼調用或嘗試安裝它,然後 一個錯誤信息將被顯示。

2以下程序必須從不同的工作簿和目標工作簿執行必須打開

VB:

Sub Del_Broken_Ref() 
     'Add a reference to the Microsoft Visual Basic for Applications Extensibility 5.3 
    Dim VBReferens As VBIDE.Reference 
    Dim VBProjekt As VBIDE.VBProject 
    Dim stBok As String 

    stBok = Workbooks("Test.xls").Name 

    Set VBProjekt = Workbooks(stBok).VBProject 

    For Each VBReferens In VBProjekt.References 
     If VBReferens.IsBroken Then VBProjekt.References.Remove VBReferens 
    Next VBReferens 

End Sub 

如果運行Excel 2002及以上的,必須允許通過工具獲取VB項目s - 宏 - 安全。

[編輯]如果加載項VB項目被關閉,那麼你的運氣了......

相關問題