Страницы: 1 2 След.
RSS
Проверка открытых файлов
 
Добрый всем вечер..  
Ещё раз спасибо всем кто помог мне в прошлый раз.  
Сейчас у меня такая проблема..Есть документ.Как сделать так что бы при открытии документа производилась проверка на наличие ещё открытых файлов Excel ..  
Если уже хотя бы один файл Excel (любой)открыт выскакивало сообщение что есть открытые файлы а если кроме этого нет открытых файлов Excel то сообщение что нет...  
Вообще это реально??  Заранее благодарю всех кто хоть чем то сможет мне помочь..
 
достал из закромов, автор неизвестен (две версии функции):  
_______________________  
 
как определить открыта ли книга    
Как из рабочей книги определить, открыта ли в текущий момент другая книга.    
 
Dim wbBook as workbook  
On error resume next  
set wbBook = workbooks("Книга1.xls")  
If wbBook is nothing then    
msgbox "Книга1 не открыта"  
else  
msgbox "Книга1 открыта"  
end if  
 
Function ifopen(wbName As String) As Boolean  
Dim wbBook As Workbook  
For Each wbBook In Workbooks  
If wbBook.Name <> ThisWorkbook.Name Then  
If Windows(wbBook.Name).Visible Then  
If wbBook.Name Like "*" & wbName & "*" Then ifopen = True: Exit For  
End If  
End If  
Next wbBook  
End Function  
 
Function ifopen(w As String) As Boolean  
On Error Resume Next  
ifopen = Workbooks(w).Name <> ""  
End Function
 
Спасибо Hugo  
Попробовала...что то не получаеться...  
Мне нужно что бы при открытии документа производилась проверка открыты ещё документы или нет..  
Может кто поможет..
 
Такая модификация, проверил:  
 
Sub check()  
If ifopen() = True Then MsgBox "Open"  
End Sub  
 
Function ifopen() As Boolean  
Dim wbBook As Workbook  
For Each wbBook In Workbooks  
If wbBook.Name <> ThisWorkbook.Name Then  
If Windows(wbBook.Name).Visible Then ifopen = True: Exit For  
End If  
Next wbBook  
End Function
 
Извините Hugo  
Не хочеться Вас отвлекать но не подскажете куда это положить..  
Извините если туплю...что то не пойму..нухоть убейте меня..
 
Добрый и Вам!  
 
Вот так:  
-----------------------------  
Private Sub Workbook_Open()  
   If Workbooks.Count > 1 Then MsgBox "Открыты ещё документы!"  
End Sub  
-----------------------------
<FONT COLOR="CadetBlue">
 
Добавить в модуль "ЭтаКнига".  
 
Удачи Вам ;)
<FONT COLOR="CadetBlue">
 
Дъмитръ, а как быть с PERSONAL.xls? А у меня кроме него ещё 2 книги постоянно висят, невидимые...
 
Ой...спасибо Дъмитръ  
Так хочется Вас расцеловать....  
Как говорится краткость...сестра таланта...  
Коротко и работает..(да пусть не обижаеться на меня Hugo ..это я просто туплю по немногу..)  
Всем огромное спасибо...Все молодцы...УДАЧИ
 
Lusi, не забудьте про Personal и другие скрытые книги, которые могут быть у юзеров.
 
Ой.....Вы меня напугали..  
Что это ещё за PERSONAL.xls ??????да ещё и невидимые
 
Уважаемый Hugo  
Я бы и Ваш вариант с радостью попробовала (может и Вас расцеловала бы)но куда не приткну код ...не работает...Вот не задача...
 
Это книги типа надстроек, которые запускаются из папки автозагрузки Экселя.  
У меня например в одной сумма прописью висит (так было задумано автором, ну нехай), в другой всякие мои и не только UDF (только), ну и собственно сам PERSONAL.XLS. Все в скрытом виде.  
Но у Вас их вероятно нет, так что если только для себя код пишете - успокойтесь :)
 
В    
 
Private Sub Workbook_Open()  
If ifopen() = True Then  
MsgBox "Открыты другие книги!!!"  
Else  
MsgBox "Расслабься!"  
End If  
End Sub  
 
В стандартный модуль:  
 
Function ifopen() As Boolean  
Dim wbBook As Workbook  
For Each wbBook In Workbooks  
If wbBook.Name <> ThisWorkbook.Name Then  
If Windows(wbBook.Name).Visible Then ifopen = True: Exit For  
End If  
Next wbBook  
End Function
 
Игорь (Hugo), кажется в данном случае я поступил правильно :)  
 
А если учитывать и "PERSONAL.xls":  
1. Функцию вставить в любой модуль (например, "Module1").  
---------------------  
Function ifopen() As Boolean  
Dim wbBook As Workbook  
For Each wbBook In Workbooks  
If wbBook.Name <> ThisWorkbook.Name Then  
If Windows(wbBook.Name).Visible Then ifopen = True: Exit For  
End If  
Next wbBook  
End Function  
---------------------  
2. И снова, добавить в модуль "ЭтаКнига".  
---------------------  
Private Sub Workbook_Open()  
If ifopen() = True Then MsgBox "Открыты ещё документы!"  
End Sub  
---------------------  
 
P.S. так что пора расцеловать Hugo ;)
<FONT COLOR="CadetBlue">
 
Раз уж заготовил - смотрите.
 
Дмитрий, вероятно >1?
 
Нет Игорь, таки "0" :)  
 
Дмитрий (The_Prist), очень коротко и ясно, спасибо! ;)
<FONT COLOR="CadetBlue">
 
Ч0рт, забыл спросить...  
 
Дмитрий (The_Prist), а почему все же "Dim lCount As Long"? Или бывает и такое? :)
<FONT COLOR="CadetBlue">
 
А что - счётчик не может быть Long?
 
Может быть :)  
 
Но неужели такое большое количество файлов Excel может быть открыто?  
 
P.S. Поэтому и спросил.
<FONT COLOR="CadetBlue">
 
Long инициализируется зато быстрее, чем Integer :-)
 
Вот этого (ответа) я и ждал, Юрий, спасибо :)  
 
P.S. Теперь понял почему "Long".
<FONT COLOR="CadetBlue">
 
Доброе утро всем..  
Огромное спасибо Дъмитръ  
Как обещала мой поцелуй для Вас...(и вам Hugo за желание помочь Дъмитръ)  
Таке же огромное спасибо всем кто поддержал мою тему...  
Хочеться продолжить немного эту тему..Есть вопрос..  
А как сделать так что бы проверка была не всех (в общем) открытых файлов...а конкретных.Например есть у меня на компе 4файла..этими файлами пользуются многие.Захотела я перезагрузить комп и мне приходиться спрашивать работает кто в данный момент или нет..Я хочу создать файл в котором прописать проверку на открытие этих 4 файлов.Открываю я файл а там выскакивает окно (ну форма например или сообщение)в котором написаны имена этих 4 файлов и какие открыты или закрыты из них...
 
Уважаемый The_Prist  
Файлы находяться у меня на компе...но с других компьютеров их открывают другие пользователи.(по сетке).кто то просто смотрит..кто то редактирует...но заходят по одному..то есть один документ более одного пользователя не открывает...один вышел...зашел другой...в кратце так..  
Как в данном случае мне поступить...???В моём случае мой комп выступает в роли сервера...и что бы перезагрузить я каждый раз провожу опрос...не сидит ли кто там...ужас..
 
Откройте их сами. Если удалось - можно смело перезагружаться.
 
Я этим и занимаюсь в принципе..(когда спрашиваю а когда начинаю открывать  все подряд) вот только одна беда пока я открою последний уже в первый может кто то войти
 
Не закрывайте, так и перезагружайтесь :)
 
Сначала выдёргиваем сетевой кабель, затем...
 
А кстати, что будет, если кто-то открыл файл? Перезагрузиться это ведь помешать не должно? Ну resetу точно не помешает :)  
У того человека вроде тоже ничего не случится. Вот сохранить будет некуда, пока комп в сети не появится...  
Или я ошибаюсь? Проверять самому как-то не хочется :)
Страницы: 1 2 След.
Читают тему
Наверх