Проверка файла - открыт или нет. КАК?
Модератор: Naeel Maqsudov
Обсуждение использование тега CODE перенесено в отдельную тему
Даже самый дурацкий замысел можно воплотить мастерски
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
ОК! Можно и чисто бейсиком обойтись... и идею оставить без изменений.2) Наверное стоит уточнить, что подразумевался код не содержащий функций WinApi и т.п. так как они не являются частью VBA (хотя и могут быть использованы)
Код: Выделить всё
Function IsOpenable(AFile As String) As Long
FN = FreeFile
On Error Resume Next
Open AFile For Input Access Read Lock Read Write As #FN
IsOpenable = Err.Number
Close #FN
End Function
Sub Macro1()
Select Case IsOpenable("C:\1\111.xls")
Case 70: MsgBox "Уже открыт"
Case 53, 76: MsgBox "Не открыт, так как такого файла (пути) нет"
Case 0: MsgBox "Не открыт никем для записи. Можно открывать"
Case Else: MsgBox "Нельзя открывать по прочим причинам"
End Select
End Sub
Уважаемый Naeel Maqsudov
Признать опубликованный Вами код идеальным назвать пока нельзя, так как в нём присутствует полное имя файла. А исходя из Ваших же постулатов, что надо учитывать все возможные нюансы, вероятность неизвестного месторасположение файла весьма велика. Так что наша дружеская беседа имеет реальный шанс на продолжение …
P.S. PLS, не цитируйте меня, ибо цитирование это удел только великих людей.
Признать опубликованный Вами код идеальным назвать пока нельзя, так как в нём присутствует полное имя файла. А исходя из Ваших же постулатов, что надо учитывать все возможные нюансы, вероятность неизвестного месторасположение файла весьма велика. Так что наша дружеская беседа имеет реальный шанс на продолжение …
P.S. PLS, не цитируйте меня, ибо цитирование это удел только великих людей.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Не, ну я могу сюда добавить конечно и такой вариант который еще и по папкам ходит рекурсивно. Но целесообразность этого не очевидна... А скорее очевидна нецелесообразность
. Если мы проверяем не занят ли кем-нибудь некий файл, то нам всегда известно что это за файл. (На практике ниразу ни сталкивался с обратным.) Проверка нужна для того, чтобы что-то с этим файлом сделать. Это подразумевает, что файл мы уже нашли (или имели к нему путь (полный или относительный)).
Так, IsOpenable("111.xls") - это тоже допустивый вызов.

Так, IsOpenable("111.xls") - это тоже допустивый вызов.