gpt4 book ai didi

excel - 打开工作簿时出现编译错误

转载 作者:行者123 更新时间:2023-12-02 22:14:13 25 4
gpt4 key购买 nike

我有一个工作簿,它使用某种类型,我们称之为 T,它位于我的引用文献中定义的模块 (DLL) 中 - 一切都很好。

我创建了一些在 Workbook_Open() 中调用的代码,如果引用列表中尚不存在该 DLL,则会添加对 DLL 的引用。这样我就可以将工作簿交给某人,而他们不必手动创建引用。

我的问题是,当我打开工作簿(双击)时,在执行 Workbook_Open() 之前(并且可以设置引用),我被扔进调试器,该调试器指向并提示类型 T,在尚未引用的 DLL,未定义。好吧,别开玩笑了,事实并非如此。

这看起来像是先有鸡还是先有蛋。有人以前见过这个吗?你是怎么解决的?

最佳答案

就像其他人所说,如果您要在 Workbook_Open 之前添加对 DLL 的引用,则必须使用后期绑定(bind)来连接到 DLL 中的内容。

但是,我认为您的处理方式是错误的。不要在 Workbook_Open 中添加对 DLL 的引用,而是先引用该 DLL,然后检查 .IsBroken。然后,您可以使用代码来执行修复损坏的引用所需的操作。

这保留了早期绑定(bind)的好处,并且如果对 DLL 的引用被破坏,您将不会得到相同类型的编译错误。

注意:您仍然可能会遇到编译错误,但它们不会是因为缺少 DLL。当您的引用损坏时,如果函数没有以 Strings 开头,则对 VBA Strings 模块中的函数的任何使用都会触发编译错误。例如,以下如果您有任何损坏的引用,代码将在 Workbook_Open 运行之前导致编译器错误。

Private Sub Workbook_Open()
Dim r As Reference
For Each r In ThisWorkbook.VBProject.References
If r.IsBroken Then
MsgBox "Found broken reference." & vbCrLf _
& Mid(r.FullPath, InStrRev(r.FullPath, "\") + 1)
End If
Next r
End Sub

要修复,请在 MidInStrRev 前面添加 Strings.

MsgBox "Found broken reference." & vbCrLf _
& Strings.Mid(r.FullPath, Strings.InStrRev(r.FullPath, "\") + 1)

关于excel - 打开工作簿时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com