Проверка файла - открыт или нет. КАК?
Модератор: Naeel Maqsudov
Уважаемые специалисты, помогите, пожалуйста. У меня есть файл LADU.xls, который надо проверить из файла 1.xls открыт ли LADU.xls или нет. Я пробовала нижеприведенную процедуру, но она работает, только если файл LADU.xls открыт :-(
Sub Macro1()
If Windows("LADU.xls").Activate Then
MsgBox "OK!"
Else
MsgBox "NO!"
End If
End Sub
Спасибо!
Sub Macro1()
If Windows("LADU.xls").Activate Then
MsgBox "OK!"
Else
MsgBox "NO!"
End If
End Sub
Спасибо!
Можно попробовать что-то типа этого :
Sub Macro1()
On Error GoTo ErrNumbers
Workbooks("LADU.xls").Activate: MsgBox "OK!", , ""
ErrNumbers: If Err.Number = 9 Then MsgBox "NO!", , ""
End Sub
Sub Macro2()
For Each iBook In Workbooks
If iBook.Name = "LADU.xls" Then
MsgBox "OK!", , "": Exit Sub
End If
Next
MsgBox "NO!", , ""
End Sub
Sub Macro1()
On Error GoTo ErrNumbers
Workbooks("LADU.xls").Activate: MsgBox "OK!", , ""
ErrNumbers: If Err.Number = 9 Then MsgBox "NO!", , ""
End Sub
Sub Macro2()
For Each iBook In Workbooks
If iBook.Name = "LADU.xls" Then
MsgBox "OK!", , "": Exit Sub
End If
Next
MsgBox "NO!", , ""
End Sub
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
pashulka, используйте теги CODE при пудбикации исходного кода в форуме.
Теперь по существу:
Приведенные выше методы (оба) ориентированы только на текущий экземпляр Excel. Они не будут правильно работать если запущено несколько экземпляров Excel, а также если файл открыт, например, на другой рабочей станции (по сети).
Для чего нужно определять открыт ли файл?
Если для того, чтобы потом открыть, то лучше не заморачиваться с этим вовсе. Т.е. просто открывать, но обработать ошибку, если она возникнет. (см On Error)
Если же для чего-то другого, то... незнаю, пишите... Обязательно найдем лучшее решение
Теперь по существу:
Приведенные выше методы (оба) ориентированы только на текущий экземпляр Excel. Они не будут правильно работать если запущено несколько экземпляров Excel, а также если файл открыт, например, на другой рабочей станции (по сети).
Для чего нужно определять открыт ли файл?
Если для того, чтобы потом открыть, то лучше не заморачиваться с этим вовсе. Т.е. просто открывать, но обработать ошибку, если она возникнет. (см On Error)
Если же для чего-то другого, то... незнаю, пишите... Обязательно найдем лучшее решение

Спасибо, других решений не надо. Это именно тот вариан, который требовался. Я не программист, пишу для себя, чтоб чуть облегчить работу. Знаю очень мало, стараюсь использовать те процедуры, которые в состоянии понять. :-) А Вы не подскажите можно ли сделать так, чтобы файл с линками в другие файлы (все у одного пользователя на одном компе), каждый раз при открывании не спрашивал Update или нет, а делал Update ВСЕГДА и без лишних вопросов? Что-то я в хелпе этого не нашла... :-(
To Naeel Maqsudov
Использование html тэгов есть обязательное условие участия в форуме или нет ?
P.S. И хотелось бы увидеть Ваш идеальный код, который будет работать при любых условиях.
Использование html тэгов есть обязательное условие участия в форуме или нет ?
P.S. И хотелось бы увидеть Ваш идеальный код, который будет работать при любых условиях.
To Laidi
В меню Сервис выберите команду Параметры, далее выберите закладку Правка. Затем уберите "флажок" напротив текста Запрашивать об обновлении автоматических связей и нажмите кнопку ОК.
Примечание : После этого при открытии рабочей книги запрос выдаваться не будет, хотя данные будут обновляться.
В меню Сервис выберите команду Параметры, далее выберите закладку Правка. Затем уберите "флажок" напротив текста Запрашивать об обновлении автоматических связей и нажмите кнопку ОК.
Примечание : После этого при открытии рабочей книги запрос выдаваться не будет, хотя данные будут обновляться.
Вот так просто!? Век живи, век учись :-) Спасибо! Вы мне очень помогли!
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Весьма желательно, когда публикуется не 1-2 строчки, а целая структура с операторными скобками.Использование html тэгов есть обязательное условие участия в форуме или нет ?
Идея такова: используя функции WinAPI открываем файл для записи. Если он открылся, то освобождаем Handle и делаем заключение, что файл свободен. Если он не открылся, то анализируем код ошибки. Если это Sharing violation, то значит файл чем-то открыт (может быть даже не Excel-ем), и трогать его нельзя. Если нужно, могу написать и опубликовать здесь мой идеальный код. :-PИ хотелось бы увидеть Ваш идеальный код, который будет работать при любых условиях.
To Naeel Maqsudov
1) Нельзя ли ответить на мой вопрос более точно, а то Ваш ответ очень "размыт", и не содержит чёткого ответа. А вопрос относится именно к той категории, где возможен ответ в виде Да/Нет.
2) Наверное стоит уточнить, что подразумевался код не содержащий функций WinApi и т.п. так как они не являются частью VBA (хотя и могут быть использованы)
1) Нельзя ли ответить на мой вопрос более точно, а то Ваш ответ очень "размыт", и не содержит чёткого ответа. А вопрос относится именно к той категории, где возможен ответ в виде Да/Нет.
2) Наверное стоит уточнить, что подразумевался код не содержащий функций WinApi и т.п. так как они не являются частью VBA (хотя и могут быть использованы)