我为Excel (Office 2011, Mac)
编写了两个VBA加载项:第一个“基本”加载项还为第二个加载项提供了函数。还有其他加载项将来使用基本加载项的功能......
应该可以运行基本插件,第二个插件是可选的。
在第二个插件中,我正在尝试添加这样的引用:
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中被正确引用 - 当我从VBA编辑器中执行UseFunctionFromBasicAddin()
时,它可以工作。它在启动Excel时不起作用。
在VBA编辑器中添加引用(工具 - >参考)时,加载了两个加载项,但有一个MsgBox: "This workbook is currelty referenced by another workbook and cannot be closed."
但是,我想以编程方式添加引用,因为我怀疑在不同路径的另一台计算机上使用插件时链接会中断?
我很高兴有关如何摆脱运行时错误的建议(或者是否有更好的方法来管理不同的加载项?)......!
答案 0 :(得分: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项目已关闭,那么你运气不好......