Добрый день. Мне нужно задать переменную, не имея полного названия файла. Допустим, файл называется "Stock_Report_04.09.2019", находится в папке "С:\". В макросе я выявляю самый поздний файл в папке и дальше мне нужно задать переменную для файла. Как мне задать переменную последней строки открывшегося файла?
Код
Sub poisk_file_perviy_svezest()
Dim lr As Long
Dim lr2 As Long
СамыйСвежийФайл$ = LastFile$("C:\", ".xlsb")
Workbooks.Open СамыйСвежийФайл$
lr = Workbooks("stock_report*.xlsb").Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
lr2 = Workbooks("Книга2.xlsx").Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
___________________________________________________________________________________________________________
Function LastFile$(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
Optional ByVal SearchDeep As Long = 999)
Dim FilenamesCollection As New Collection
Set FSO = CreateObject("Scripting.FileSystemObject")
GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep
Set FSO = Nothing: Application.StatusBar = False
Dim maxFileDate As Double
For Each file In FilenamesCollection
currFileDate = FileDateTime(file)
If currFileDate > maxFileDate Then LastFile$ = file: maxFileDate = currFileDate
Next file
End Function
___________________________________________________________________________________________________________
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _
ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath)
If Not curfold Is Nothing Then
Application.StatusBar = "поиск в папке: " & FolderPath
For Each fil In curfold.Files
If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path
Next
SearchDeep = SearchDeep - 1
If SearchDeep Then
For Each sfol In curfold.SubFolders
GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep
Next
End If
Set fil = Nothing: Set curfold = Nothing
End If
End Function
Nordheim, функции взяты и немного переделаны. Сам саб мой. Hugo, конкретно вот эта строка интересует. как правильно ее записать? lr = Workbooks("stock_report*.xlsb").Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row при том, что stock_report я нашел с помощью функций. RAN, эта строка есть у меня в коде. Она не работает. Пишет "out of range"
Как частный случай может быть ошибка при обращении к значению Rows.count - чьё именно количество нужно брать тоже следует указывать, пока в ходу есть разные виды файлов! И это может быть не ошибка кода, а ошибочные результаты работы, что важно!