【发布时间】:2020-09-05 14:18:44
【问题描述】:
我在运行时创建引用时遇到了这个惊人的问题。
简而言之:我在另一个插件中引用了一个插件,所有插件都是我自己创建的,并且工作正常(除了加载 Excel 时出现的一些烦人的弹出窗口)。作为解决这个烦恼的方法,我删除了现有的引用,以便稍后在运行时创建它。但是当我尝试创建引用时,它返回一个"Name conflicts with existing module, project, or object library" 错误弹出窗口,并且没有创建引用——这没有任何意义,因为如果我在设计时创建引用,它就可以完美地工作。没有重复名称的模块或项目。
现在进一步解释一下。
我为我的工作开发了四个有点复杂的 Excel 应用程序。每一个都是一个 VBA 项目,以 Excel 插件 (.xlam) 的形式分发。
此外,我还有第五个项目,其功能与其他四个相同。这第五个项目在其他项目中被引用(通过工具 -> 参考)。所以现在,我所要做的就是将它们作为引用函数之外的任何 API 调用(commonProject.Function (arg1, arg2, arg3 etc))。
不幸的是,我在弹出消息 (here) 时遇到了一些问题,解决方法似乎是在运行时引用其他项目中的第五个项目。
为了做到这一点,我卸载了其他四个插件中的三个,只剩下一个,并在其Workbook_Open 事件中使用了以下代码:
Private Sub Workbook_Open()
Dim strNamePath As String
Dim bolAddinIsRefered as Boolean
Dim oRef As Variant
strNamePath = "c:\etc\etc\etc\Filename.xlam"
For Each oRef In ThisWorkbook.VBProject.References
If oRef.FullPath = strNamePath Then bolAddinIsRefered = True
Next oRef
If bolAddinIsRefered = False Then ThisWorkbook.VBProject.References.AddFromFile strNamePath
End Sub
问题是,当我过去在设计时手动创建参考时,它工作得很好(除了我现在试图规避的烦人的弹出窗口)。但是当我尝试在运行时创建引用时,它会返回一个"Name conflicts with existing module, project, or object library" 错误弹出窗口,并且没有创建引用。
我已经验证了模块和工作表名称,没有重复的。
有人知道如何防止这个错误吗?
【问题讨论】: