Страницы: 1
RSS
Заблокировать ввод данных после определенного времени
 
Здравствуйте, будьте так добры помочь.
Нужно чтоб при открытии файла запускался макрос на проверку времени и если время не подходит то файл закрывался к любому редактированию.
К примеру:
До 18.00 редактирование разрешено, после 18.00 до 0.00 редактирование запрещено. Так же чтоб выходили информационные табло, о том что редактирование запрещено до 0.00
Буду очень рад если кто нибудь поможет в таком вопросе, я просто пенек в этом полный, заранее спасибо!
 
После полуночи опять можно редактировать? Запретить изменение определенного листа или всех листов книги?

Задумка не очень хорошая. Нужно будет или постоянно держать запущеным таймер (это крайне плохо плохо), или отслеживать любое изменение на листе/листах и при этом контролировать время. Если время больше 18, защищать лист/листы.
Тут сразу вопрос:. Ладно, защитили. А как снять защиту после нуля часов?
 
На просторах интернета я нашел вот такое решение, но применить его никак не могу, поскольку по просту не чего не запускается...
Скрытый текст
Возможно вот в этом и скрывается решение на мой вопрос, но понять я его не могу:(
Изменено: Balkon - 28.09.2019 23:00:50
 
Цитата
vikttur написал:
После полуночи опять можно редактировать? Запретить изменение определенного листа или всех листов книги?
Мне нужна блокировка всей книги после 18.00 и до 22.00. Вот что именно я хотел бы узнать
 
Это макросы на открытие и закрытие книги. Открыли в 17:30 и до 18:10 не закрывали. И делай что хочешь.
 
Цитата
vikttur написал:
Тут сразу вопрос:. Ладно, защитили. А как снять защиту после нуля часов?
Мне нужна блокировка всей книги после 18.00 и до 22.00. Вот что именно я хотел бы узнать
 
отключаю в Excel макросы, открываю Вашу книгу когда хочу и никакие макросы внутри не помогут  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Здравствуйте!
Код
Private Sub Workbook_Open()
    If Format(Time(), "hh") >= 18 And Format(Time(), "hh:nn:ss") <= "23:59:59" Then
        MsgBox "Редактирование запрещено до 0.00"
        Application.DisplayAlerts = False
        ThisWorkbook.Close
        Application.DisplayAlerts = True
    End If
End Sub
 
Настя
Цитата
vikttur написал: Открыли в 17:30 и до 18:10 не закрывали. И делай что хочешь.
 
Цитата
Balkon написал:
и если время не подходит то файл закрывался к любому редактированию.
Можно ли утверждать - что редактирование в этот период - равносильно записи. Если так,  то достаточно в этот период не давать записывать по событиям сохранения книги. Но конечно
Цитата
Ігор Гончаренко написал:
отключаю в Excel макросы, открываю Вашу книгу когда хочу и никакие макросы внутри не помогут  
По вопросам из тем форума, личку не читаю.
 
Блок на лист

Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Format(Time(), "hh") >= 18 And Format(Time(), "hh:nn:ss") <= "23:59:59" Then
        MsgBox "Редактирование запрещено до 0.00"
        ActiveSheet.[a1].Activate
    End If
End Sub

vikttur, точно, не заметила Ваше сообщение

Изменено: Настя_Nastya - 29.09.2019 16:09:05
 
Цитата
Настя_Nastya написал:
Worksheet_SelectionChange
То есть даже если просто посмотреть, то на каждый чих будет ругаться, ну и конечно не блокирует внесение изменений иными методами.
По вопросам из тем форума, личку не читаю.
 
Можно разместить в модуле книги реагирование на SelectionChange любого листа и ставить  (с разрешением выделять, но не менять) или снимать защиту листа  в зависимости от времени. Но против лома (отключения макросов) нет приема :)

Balkon, надо сузить задачу. Опишите, для чего это. Конечная цель какая? Может, найдутся варианты...
Так, как сейчас, практически нереализуемо, разве что задействовать внешние инструменты (системные).
 
Тем, кто не имеет права изменять файл -  давайте смотреть pdf, который может генериться например при каждом сохранении исходного xlsm.
Или другую копию, которая всегда readonly.
А с подходом требуемом в теме - как по мне то это тупиковый путь.
Страницы: 1
Наверх