Ошибка связана с тем, что в функции Find_Second_Last_File не указаны аргументы. Для исправления ошибки нужно добавить аргументы в функцию. В данном случае, можно добавить путь к папке и расширение файла как аргументы функции. Вот исправленный код:
Sub test()
Err = 0
Application.DisplayAlerts = 0
Application.ScreenUpdating = 0
FolderPath = "(указать путь)"
wbNameFull = Find_Second_Last_File(FolderPath, ".xlsx")
MsgBox wbNameFull
End Sub
Function Find_Second_Last_File(FolderPath As String, FileExt As String) As String
Dim fso As Object
Dim myFolder As Object
Dim myFile As Object
Dim LastFile As Object
Dim SecondLastFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set myFolder = fso.GetFolder(FolderPath)
For Each myFile In myFolder.Files
If Right(
myFile.Name , Len(FileExt)) = FileExt Then
Set SecondLastFile = LastFile
Set LastFile = myFile
End If
Next myFile
If Not SecondLastFile Is Nothing Then
Find_Second_Last_File =
SecondLastFile.Name Else
Find_Second_Last_File = ""
End If
End Function
Обратите внимание, что в функции добавлены два аргумента - FolderPath и FileExt. FolderPath - это путь к папке, в которой нужно найти файл. FileExt - это расширение файла, который нужно найти. В данном случае, мы ищем файлы с расширением .xlsx. Если нужно искать файлы с другим расширением, нужно изменить значение переменной FileExt.
Err = 0
Application.DisplayAlerts = 0
Application.ScreenUpdating = 0
FolderPath = "(указать путь)"
wbNameFull = Find_Second_Last_File(FolderPath, , 1)
MsgBox wbNameFull
End Sub
Function Find_Second_Last_File() As String
Dim fso As Object
Dim myFolder As Object
Dim myFile As Object
Dim LastFile As Object
Dim SecondLastFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set myFolder = fso.GetFolder("(указать путь)")
For Each myFile In myFolder.Files
Set SecondLastFile = LastFile
Set LastFile = myFile
Next myFile
Set Find_Second_Last_File = SecondLastFile.Name
End Function