VBA删除从文件创建的特定引用

时间:2018-10-21 19:22:19

标签: excel vba excel-vba reference

我整理了以下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"错误。我想我需要再称呼它,但是我不确定应该是什么。

有什么想法吗?

2 个答案:

答案 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