Добрый день. Есть код, который проверяет названия файлов в папке (название файла "файл 02.02.2019.xlsb", "файл 04.04.2019.xlsb" и т.д.) и открывает файл с последней датой. После срабатывания функции, переменной назначается путь к файлу, но после последнего слэша появляются знаки "-$" и макрос не может открыть файл. То есть, путь к файлу выглядит как "C:\путь\-$файл 04.04.2019.xlsb". Раньше макрос открывал файл и не было такой проблемы. Подскажите, в чем может быть проблема?
Код
Sub poisk_file_perviy_svezest()
Dim wb As Workbook
СамыйСвежийФайл$ = LastFile$("С:\путь\", ".xlsb")
Set wb = Workbooks.Open(СамыйСвежийФайл$)
_________________________________________________________________________________________________
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
Hellmaster написал: после последнего слэша появляются знаки "-$" и макрос не может открыть файл
потому что этот знак означает временный заблокированный файл(скрытый). Это временная копия открытого в текущий момент файла. Такие вообще надо пропускать, ибо открыть и не получится в любом случае и смысла в этом нет. Как вариант вместо этой строки If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path записать такую:
Код
If fil.Name Like "*" & Mask Then
if fil.Attributes <> 2 then
FileNamesColl.Add fil.Path
end if
end if
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Дмитрий(The_Prist) Щербаков, а можно открыть файл только для чтения или не открывая файл, скопировать из него данные? Есть ли вообще какой-то способ вытащить информацию из такого файла?
а про "не открывая" - технически это вообще невозможно сделать, т.к. нельзя даже считать данные, не открыв файл хоть как-то. И если уж речь про работу из Excel, то лучше открыть в скрытом режиме и потом считывать. Но можно и другими методами(но с ограничениями). Впрочем, все это я уже описывал здесь: Как получить данные из закрытой книги?
Цитата
Hellmaster написал: Есть ли вообще какой-то способ вытащить информацию из такого файла?
Дмитрий(The_Prist) Щербаков написал: Такие вообще надо пропускать, ибо открыть и не получится в любом случае и смысла в этом нет.
это временный заблокированный файл. Считай системный. Это не файл Excel, у него вообще особый свой формат в бинарном виде. Нет, можно теоретически считать, но для этого надо очень хорошо владеть информацией о том, как туда Excel записывает информацию, в каком виде и какую именно. Я вот, например, этого не знаю.
Дмитрий(The_Prist) Щербаков, дело в том, что руками я могу открыть файл только для чтения, так же, могу скопировать его на рабочий стол и открыть без подобных проблем
Hellmaster написал: руками я могу открыть файл только для чтения
Ну здесь я тогда ничего не могу подсказать, не видя самого файла. У меня такие файлы не открываются. А если Вы можете его открыть руками и видите всю нужную информацию - в чем проблема-то вообще? Открыли на чтение, прочитали что нужно и все. Или сохранили в другой файл и сделали с копией что душе угодно...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Дмитрий(The_Prist) Щербаков, просто есть еженедельная задача, которую мне руками делать лень. Пытаюсь написать макрос для коллег, но с сохранением файла в другую папку возникнут некоторые сложности, т.к. в общих папках желательно не добавлять папки, а рабочий стол у всех по разным ссылкам находится) А вот с открытием только для чтения что-то не выходит. Выдает ту же ошибку, что и без readonly:=true. Еще раз спасибо, буду пытаться дальше)
Мне коллеги присылают на почту файл и просят подтянуть данные и посчитать. Так что делаю это я) Чтобы я этого не делал, пишу макрос для них, чтобы меня не беспокоили больше)
Вот сейчас еще раз макрос запустил и он открыл файл только для чтения. До этого была ошибка "невозможно открыть файл "путь к файлу\-$файл" и окно с Debug