Excel 2010アドインを動的に読み込むときは、ワークブックに読み込まれた後で、新しく追加されたアドインを含むようにVBA参照を変更する必要があります。実行時(アドインのランタイム読み込み後)にExcel VBA参照を変更することは可能ですか?
このコードは、プログラムでアドインを読み込むために働く:
Function LoadAddin(strFilePath As String) As Boolean
' Checks whether add-in is in collection, and
' then loads it. To call this procedure, pass
' in add-in's path and file name.
Dim addXL As Excel.AddIn
Dim strAddInName As String
On Error Resume Next
' Call ParsePath function to return file name only.
'strAddInName = ParsePath(strFilePath, FILE_ONLY) 'not available in VBA...so it seems to always physically load it below, which seems to work fine.
' Remove extension from file name to get add-in name.
strAddInName = Left(strAddInName, Len(strAddInName) - 4)
' Attempt to return reference to add-in.
Set addXL = Excel.AddIns(strAddInName)
If err <> 0 Then
err.Clear
' If add-in is not in collection, add it.
Set addXL = Excel.AddIns.Add(strFilePath)
If err <> 0 Then
' If error occurs, exit procedure.
LoadAddin = False
GoTo exit_function
End If
End If
' Load add-in.
If Not addXL.Installed Then addXL.Installed = True
LoadAddin = True
exit_function:
Exit Function
End Function
ので、新たに含まれ、この中にVBAを指し、ホストスプレッドシート内のVBAコードを追加して、今の参照にこれを追加する方法があります-Inは正しく実行されますか?
どこへ行くルートはのようなものかもしれないと表示されます。
ThisWorkbook.VBProject.References.AddFromFile ("C:\MyFiles\MyAddin.xlam")
...しかし、これは私にエラーを与える:
Microsoft Visual Basic for Applications
Run-time error '32813':
Application-defined or object-defined error
ホストプロジェクトは、アドインの手順への早期バインド参照を持っている場合は既存の参照はありませんならば、あなたはコンパイルエラーを取得することがありますが、実際には他を参照するコードを呼び出すまで、これらのエラーは常に待機していませんプロジェクト... –
@Tim:これを回避するには、Workbook_Open()で最初に負荷を呼び出すことが必要です。ただし、スプレッドシートが開いているときに計算が自動の場合は問題になる可能性があります。おそらくどこかでエラーハンドラに読み込むことができます.... – tbone
[オプション]の下で[VBProjectへの信頼アクセス]チェックボックスをオンにしましたか?また、VBE拡張ライブラリへの参照を追加しましたか? –