excel - 更改引用库的位置
问题描述
我有一个在 Excel VBA 项目中使用的 C# 库。我现在希望重组我的项目并将库移动到不同的文件夹。但是,在删除对库的引用并从我的计算机中删除库的所有实例之后,该项目的“可用引用”框仍然显示对旧库位置的引用,即使它不再存在于计算机上,而且我似乎什么也没做能够删除该引用。
我不知道这是否有任何区别,但该项目是一个 Excel 插件。
我在 2019 年遇到了这个问题,并在 2019 年 4 月收到了对同名问题的回复。当时,按照给出的建议解决了这个问题。然而这一次系统顽固地拒绝打球。
我被建议在 2019 年遵循的程序是:
- 删除参考
- 保存文件并关闭它
- 从您的计算机中删除 dll(在我的情况下为 .tbl)文件。不要将其保存在任何地方。
- 重新打开文件
- 检查是否还有任何参考。如果没有将 dll 复制到新文件夹,然后再次设置引用。保存并关闭文件。
- 重新打开以检查是否一切正常
我正打算尝试代码删除引用,但是下面的代码没有找到引用
Sub delRef()
deleteReference ("FiskDLLlib")
End Sub
Sub deleteReference(s As String)
Dim oFs As Object, oReferences As Object, oReference As Object
Dim sFileName As String, sRefName As String, sRefFileName As String
Dim toBeDeletedRef As String
Set oReferences = Application.Workbooks("fiskAIWkBook.xlam").VBProject.References
For Each oReference In oReferences
sRefFileName = oReference.FullPath
sRefName = oReference.name
If sRefName = s Then
toBeDeletedRef = s
Exit For
End If
Next
If toBeDeletedRef <> "" Then
Debug.Print oReference.FullPath
Else
Debug.Print "No Reference found for " & s
End If
End Sub
同样,Watches 面板也没有显示库。
我随后发现了一个注册表项 \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib{B22F6C9D-53E0-4D1B-9596-56AA1EA4BDBA}\1.0\0\win32 其值设置为我要删除的引用的位置。我将其更改为对要存储 dll (.tlb) 文件的新位置的引用。这至少看起来可以让我在“引用”框中创建一个新的引用,但是在单击“确定”时,我收到一条消息“加载 DLL 时出错”
解决方案
我最终解决了我的问题,方法是使用注册表清理工具(ReImage)删除注册表中对库的所有引用,然后将库复制到其新目录,然后使用 regASM 重新注册
推荐阅读
- sympy - 如何用 sympy 中的单个变量替换大表达式
- kotlin - 错误:类型不匹配:推断类型为 FirstFragment 但预期为上下文
- javascript - 如何在 React 的输入字段中的输入文本旁边添加永久标签
- c++ - 如何使用日期库获得两次之间的差异?
- javascript - 使用 Vue.js 在 IE 中隐藏的输入字段不显示值属性
- python - 切片列表是字典的值
- python - (django)我想在创建用户时根据他们的角色创建一个指定的模型实例
- sorting - 正确排序数据框
- flutter - DateTime.isAtSameMomentAs() 不适合我
- google-cloud-platform - 为什么 Google GCP 在创建新存储桶时会默认创建 Storage Legacy 角色?