VBA, чтобы удалить специфическую ссылку, созданную из файла - PullRequest
0 голосов
/ 21 октября 2018

Я собрал следующий 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 с * 1006.* следующим образом:

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, в строке vbProj.References.Remove "C:\User\documents\Master_file.xlsm" появляется ошибка Type mismatch.Полагаю, мне нужно назвать это как-то иначе, но я не уверен, что это должно быть.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Вы путаете с типами данных.

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
0 голосов
/ 21 октября 2018

Не ответ, но его слишком долго оставлять в качестве комментария.

Попробуйте следующий код, чтобы помочь вам отладить свойство Reference, которое вы хотите удалить.

Loopтщательно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...