Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка VBA "wrong number of arguments or invalid property assignment" Как исправить?

Костя Бастрыкин Бастрыкин Ученик (95), на голосовании 1 год назад
Sub test()

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
Голосование за лучший ответ
...WorkOut... Мыслитель (9007) 1 год назад
Ошибка связана с тем, что в функции 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.
Костя Бастрыкин БастрыкинУченик (95) 1 год назад
Пишет ошибку ByRef arguemnet type mismatch и указывает на "FolderPath"
Костя Бастрыкин Бастрыкин Ученик (95) Костя Бастрыкин Бастрыкин, решил проблему
Похожие вопросы