Страницы: 1
RSS
Напоминание о необходимости сохранить и закрыть файл
 
Добрый день всем. Искал поиском, похожих тем много, но ввиду того, что я полный нуб в макросах и Ёксель в частности, ничего путного вынести из информации не удалось. Суть:  
на сервере имеется файл заказа деталей, им пользуются несколько человек, включая директора и замов, пока файл открыт у одного, другим редактирование недоступно. Часто директор уезжая, забывает закрыть файл и все курят от нескольких часов до нескольких дней. Зайти в кабинет - не обсуждается, нельзя. Мне задача-сделать напоминалку, которая бы раз в минуту выкидывала бы окошечко поверх ВСЕХ окон со звуком "блим", с предложением сохранить и закрыть файл. Должно работать у всех пользователей.    
Помогите пожалуйста, работаю недавно, директор возлагает надежду((((
 
Директор сам заказывает детали? :)  
Может ему сделать спецфайл, который при открытии будет делать копию с общего файла и открывать её?  
Тогда директор будет "сам по себе", никому мешать не будет, спокойно смотреть последнюю сохранённую копию. Но конечно никакие его правки остальным видны не будут (и хорошо :) ).  
Ну а для остальных может и никаких надоедающих напоминалок не нужно делать.
 
Да, у нас так построена работа-все в течение дня делают заказы в файле, с комментариями, включая директора, а он в любое время может его открывать и делать заказ у поставщика, т.к. только у него есть эксклюзивные права... Долго объяснять, но смысл такой. Это уже не переделать((( Видимо нужен макрос какой то напоминающий....
 
А сделать общий доступ нельзя?
 
Я как понял, что общий доступ глючно работает...А это у нас нельзя допустить(((
 
А программные средства (не Excel) не подходят? Например, NetSend7: http://soft.oszone.net/program/11545/NetSend7.html
 
{quote}{login=}{date=01.06.2012 10:36}{thema=Re: }{post}Я как понял, что общий доступ глючно работает...А это у нас нельзя допустить((({/post}{/quote}А несколько дней ждать шефа - нормально :-)  
У меня вопрос: каким образом поможет напоминалка (даже орущая) директору, когда его нет несколько дней?
 
{quote}{login=okshef}{date=01.06.2012 10:38}{thema=}{post}А программные средства (не Excel) не подходят?{/post}{/quote}  
Это немного не то...не думаю, что он нам поможет((
 
{quote}{login=Юрий М}{post}каким образом поможет напоминалка (даже орущая) директору, когда его нет несколько дней?{/post}{/quote}  
смысл в том, чтобы работник(хоть кто, и директор тоже) заполнив строку заказа, или посмотрев его, это в среднем 1-2 мин, не забывал закрывать файл. А то у всех открыто окон штук по 15-20 да плюс браузер и база, окно заказа заваленное снизу остается, приходится постоянно в аську шуметь(она без звука по регламенту-могут и не заметить(() или бежать в соседний кабинет или другой этаж....А если звонить по телефону, то постоянно все занято, да и времени уходит море.
 
А если пойти по другому пути: принудительно через 2-3 минуты закрывать открытый файл? Подобных примеров на форуме много: в поиск - макрос по расписанию.  
Хотя, по расписанию можно и проиграть звуковой файл. Но закрывать надёжнее.
 
Так, как идея для разработки - на каждый Workbook_SheetSelectionChange() запускать таймер, который через 5 минут сохранит и закроет книгу. Как вариант - через 30 минут :)  
Т.е. если шеф (и любой другой) шевелится - таймер всё время перезапускается. Если ушёл - книга освободится.  
Нужно продумать - сохранять оригинал или делать копию. Может быть лучше оригинал закрывать без сохранения - сам виноват, что понаписал и не сохранил :)
 
Опередил :)
 
Нее...шеф против всякой автоматики((( Только напоминалку говорит. Да и все подряд сохранять не стоит, так же как и нельзя без сохранений закрыть(
 
Ну тогда делать всё так же, но вместо сохранения/закрытия включать сирену и msgbox. Но таймер на минуту, не больше.  
Хотя тоже есть шанс, что успеет уйти и дверь закрыть... :)
 
Дело Ваше... Только при возможности спросите у шефа - что даст напоминалка, когда у него закрыт кабинет?  
Вызов макроса по расписанию нашли?
 
{quote}{login=Hugo}{date=01.06.2012 12:07}{thema=}{post}Ну тогда делать всё так же, но вместо сохранения/закрытия включать сирену и msgbox. Но таймер на минуту, не больше.  
Хотя тоже есть шанс, что успеет уйти и дверь закрыть... :){/post}{/quote}  
Ну да, просто виндовый звук "тадам!!" привязать и мессагу выкинуть поверх всех окон с кнопкой "ок"...Вот как бы это все наваять только..(((
 
Все еще прошу помощи в создании макроса ((((
 
Option Explicit  
 
Dim varNextCall As Variant  
 
 
Sub UpdateTime()  
   On Error Resume Next  
   Application.OnTime EarliestTime:=varNextCall, Procedure:="GoMsg", Schedule:=False  
   ' Записываем в varNextCall время, когда вызвать этот макрос _  
     в следующий раз (например через 10 секунд)  
   varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) + 10)  
   ' Уведомляем Excel в необходимости вызова макроса  
   Application.OnTime varNextCall, "GoMsg"  
End Sub  
 
 
Sub GoMsg()  
   MsgBox "Alarma!", vbCritical  
End Sub  
 
 
 
В модуль книги:  
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)  
UpdateTime  
End Sub  
 
 
Правда в таком варианте если нажать ОК и больше по ячейкам не передвигаться - то больше сообщений не будет.  
И мессага не будет поверх всех окон.  
Если не годится - нужно думать...
 
{quote}{login=Hugo}{date=06.06.2012 09:37}{thema=}{post}Если не годится - нужно думать...{/post}{/quote}  
Hugo, да судя по Вашему описанию, это не совсем то((( Нужна просто брякающая напоминалка поверх всех окон раз в минуту.    
З.Ы. Ну и небольшая консультация как и куда применить сам код(((
 
Если бы у меня раз в минуту что-то постоянно брякало - я бы автора этих бряканий уволил через 10 бряканий :)  
 
С моим кодом будет брякать через установленное время после того, как перестали работать с книгой - т.е. перестали передвигаться по ячейкам.  
Естественно, в рабочей версии нужно сейчас выставленные 10 секунд увеличить.  
 
Что куда вставить:  
1. добавляем в проект стандартный модуль, в модуль код:  
=================  
Option Explicit  
 
Public varNextCall As Variant  
 
Sub UpdateTime()  
On Error Resume Next  
Application.OnTime EarliestTime:=varNextCall, Procedure:="GoMsg", Schedule:=False  
' Записываем в varNextCall время, когда вызвать этот макрос _  
в следующий раз (например через 10 секунд)  
varNextCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) + 10)  
' Уведомляем Excel в необходимости вызова макроса  
Application.OnTime varNextCall, "GoMsg"  
End Sub  
 
Sub GoMsg()  
MsgBox "Просьба закрыть брякалку," & vbNewLine _  
& "если больше не будете с ней работать!", vbCritical  
'UpdateTime  
End Sub  
======================  
 
2. в модуль ЭтаКнига (или ThisWorkbook) копируем этот код:  
 
======================  
Option Explicit  
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)  
On Error Resume Next  
Application.OnTime EarliestTime:=varNextCall, Procedure:="GoMsg", Schedule:=False  
End Sub  
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)  
UpdateTime  
End Sub  
======================  
 
MsgBox будет появляться поверх других открытых в Экселе файлов.  
Чтоб вообще поверх всех окон - не нашёл как сделать.  
Думаю тут нужно API подключать.  
 
Попробуйте, может быть и так можно оставить.
 
{quote}{login=Hugo}{date=07.06.2012 11:19}{thema=}{post}Если бы у меня раз в минуту что-то постоянно брякало - я бы автора этих бряканий уволил через 10 бряканий :)  
{/post}{/quote}  
:-) Согласен. Но на то воля царя))) И теперь о грустном- у меня 2003 ёксел, это влияет на что нибудь? Чего то я потыкался, создал макрос, вставил код, и...ничего(( Поподробнее не расскажете, как чего и куда?(((
 
{quote}{login=}{date=01.06.2012 10:36}{thema=}{post}Я как понял, что общий доступ глючно работает...А это у нас нельзя допустить((({/post}{/quote}  
простите, но у вас глючно работает другое :)
 
Из дома могу и файлик показать :)  
Одну строку раскомментировал - чтоб надоедало и если после месиджа по ячейкам не елозим :)
 
Спасибо, крякает)) Но не совсем корректно((( Если ексель закрыт хоть каким окном, то не только мессага не выскакивает, но и кряка нет(((
 
Попробуйте вместо MsgBox использовать форму. Подобные темы обсуждались. Запрос в поиск: поверх всех окон
Страницы: 1
Читают тему
Loading...