2

用に 2 つの VBA アドインを作成しましたExcel (Office 2011, Mac)。最初の「基本」アドインは、2 番目のアドインの機能も提供します。将来的には、基本アドインの機能を使用する他のアドインも存在する予定です... 基本プラグインのみを実行し、2 つ目のプラグインはオプションとして実行できるようにする必要があります。

2 番目のプラグインでは、次のような参照を追加しようとしています。

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

Private Sub UseFunctionFromBasicAddin()
    FunctionFromBasicAddin
End Sub

ただし、これにより、Excel の起動時にランタイム エラーが発生します。Run-time error 91: Object variable or With block variable not set.

このエラーの後に VBA エディターを開くと、BasicAddin.xlam が SecondAddin で正しく参照されていることがわかりUseFunctionFromBasicAddin()ます。また、VBA エディター内で from を実行すると、動作します。エクセルを起動しても動かない。

VBA エディタ ([ツール] -> [参照]) で参照を追加すると、両方のアドインが読み込まれますが、MsgBox: "This workbook is currelty referenced by another workbook and cannot be closed."

ただし、別のコンピューターで別のパスを持つプラグインを使用するとリンクが壊れると思われるため、プログラムで参照を追加したいですか?

実行時エラーを取り除く方法についての提案をいただければ幸いです (または、さまざまなアドインを管理するためのより良い方法はありますか?)...!

4

1 に答える 1

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 プロジェクトへのアクセスを許可する必要があります。

[編集] アドインの VB プロジェクトが閉じている場合、あなたは運が悪いです...

于 2012-12-15T22:10:39.313 に答える