我整理了以下VBA,以添加对工作簿的引用。
Sub Add_Reference()
Dim vbProj As Object
Set vbProj = ActiveWorkbook.VBProject
vbProj.References.AddFromFile "C:\User\documents\Master_file.xlsm"
CleanUp:
Set vbProj = Nothing
End Sub
我认为我会很乐意通过将remove
切换为AddFromfile
来对Remove
进行以下操作:
Sub Remove_Reference()
Dim vbProj As Object
Set vbProj = ActiveWorkbook.VBProject
vbProj.References.Remove "C:\User\documents\Master_file.xlsm"
CleanUp:
Set vbProj = Nothing
End Sub
运行Remove_Reference
时,在Type mismatch
行上出现vbProj.References.Remove "C:\User\documents\Master_file.xlsm"
错误。我想我需要再称呼它,但是我不确定应该是什么。
有什么想法吗?
答案 0 :(得分:2)
您对数据类型感到困惑。
AddFromFile
接受一个string
参数,它是完整的文件路径。
另一方面,Remove
要求输入Reference
类型作为参数。因此,类型不匹配错误。
您需要循环,匹配然后删除引用。
Sub test()
Dim refs As Object 'VBIDE.References
Dim ref As Object 'VBIDE.Reference
Dim strRefPath As String
strRefPath = "C:\User\documents\Master_file.xlsm"
Set refs = ThisWorkbook.VBProject.References
For Each ref In refs
Debug.Print ref.Name & "=> " & ref.FullPath
If ref.FullPath = strRefPath Then
Debug.Print "removing :" & ref.FullPath
refs.Remove ref
Exit For
End If
Next
End Sub
答案 1 :(得分:0)
不是答案,但是要发表评论太久了。
请尝试以下代码,以帮助您调试要删除的Reference
的属性。
遍历所有vbProj.References
,然后使用Deubg.print
查看要删除的Reference
的确切属性。
Sub ProjRef()
Dim vbProj As Object
Dim i As Long
Set vbProj = ActiveWorkbook.VBProject
With vbProj.References
For i = 1 To .Count ' loop through references
Debug.Print .Item(i).Description
Debug.Print .Item(i).Name
Debug.Print .Item(i).FullPath
' add here your If to check the reference you want to remove
Next
End With
End Sub