Причина
The issue is on the Str(LNK) from "Call recLink(Str(LNK))".
Решение
Создайте строковую переменную и установите LNK в эту переменную, затем вы можете вызвать функция с использованием строковой переменной. Это будет работать.
Dim strLink as String
.
.
strLink = LNK
Call recLink( strLink )
.
.
Как я нашел
Я обнаружил это только потому, что сначала пытался поместить все ссылки в массив, и такая же проблема возникла, когда VBA собирался просто определить массив с помощью LNK. Поэтому я понял, что проблема не может быть в рекурсивном вызове, и единственное, что отличалось, - это функция STR (). arrLink (x) = Str (LNK)
My sugestion
Этот код сохраняет все windows скрытия Excel, более красивую презентацию и ускоряет выполнение.
Function recLink(strPath As String)
Dim objMaster As Object
Dim wbkMaster As Workbook
Dim strLink As String
Set objMaster = CreateObject("Excel.Application")
With objMaster
.Visible = False
Set wbkMaster = .Workbooks.Open(strPath)
If Not IsEmpty(wbkMaster.LinkSources(xlExcelLinks)) Then
For Each LNK In wbkMaster.LinkSources(xlExcelLinks)
strLink = LNK
Debug.Print strLink
Call recLink(strLink)
Next LNK
Else
End If
End With
wbkMaster.Close (False)
Set objMaster = Nothing
Set wbkMaster = Nothing
End Function
Заключение
Протестируйте оба кода и выберите лучший для вас.
С уважением Приятных выходных.