在 VBA 中,我可以看到 PDFCreator 的三个不同参考。其中之一(参见第二张图片)是本地存储的软件版本,并且可以运行。我想使用这个参考。
另外两个是对服务器上存储的版本的引用,它们已损坏(现阶段,我无权重新安装或删除它们)。
我的问题是,选择所需的参考(参见第二张图片)并单击“确定”后,它重置为不正确的参考,如第三张图片所示。
我怎样才能覆盖正在发生的事情并选择所需的参考或删除不正确的参考?虽然我无法从服务器卸载这些版本,但我认为我的 Excel 没有理由需要引用它们。可以将它们从列表中删除吗?
图 1:VBA 项目引用的默认状态(未选择 PDFCreator)
Image 2: Selecting the correct PDFCreator version
Image 3: Re-opening the menu shows that the incorrect PDFCreator version is selected
您也许可以执行以下操作...
要删除损坏的引用:
Private Sub RemoveBrokenReferences(ByVal Book As Workbook)
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Dim oRefS As Object, oRef As Object
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Set oRefS = Book.VBProject.References
For Each oRef In oRefS
If oRef.IsBroken Then
Call oRefS.Remove(oRef)
End If
Next
End Sub
要删除特定引用:
使用类似的东西:
Call ActiveWorkbook.VBProject.References.Remove(oReference)
您可以从以下位置获取 oReference:
Private Function GetReferenceFromPath(ByVal FilePathName As String) As Object
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Dim oFs As Object, oReferenceS As Object, oReference As Object
Dim sFileName As String, sRefFileName As String
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Set oFs = Interaction.CreateObject("Scripting.FileSystemObject")
sFileName = oFs.GetFileName(FilePathName)
Set oReferenceS = ActiveWorkbook.VBProject.References
For Each oReference In oReferenceS
sRefFileName = oFs.GetFileName(oReference.FullPath)
If StrComp(sFileName, sRefFileName, vbTextCompare) = 0 Then
Set GetReferenceFromPath = oReference
End If
Next
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)