Вообщем реализация не принципиальна, но если кто сможет это сделать, было бы не плохо. Задача такая. Открываем файл, вставляем макрос, закрываем редактора VBA и нажимаем определенные клавиши для запуска макроса, но запустится он после второго открытия файла. Делать макрос должен следующее - После первого открытия файла (после того как мы уже нажимали ключевые клавиши), макрос должен запустить отсчет времени и через, скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить - здесь не сам пароль важен, а такая замкнутая функция - не знаешь ключевых клавиш, фиг распаролишь.
Прошу не плеваться сильно, я чайник в этих делах))))
Вообщем реализация не принципиальна, но если кто сможет это сделать, было бы не плохо. Задача такая. Открываем файл, вставляем макрос, закрываем редактора VBA и нажимаем определенные клавиши для запуска макроса, но запустится он после второго открытия файла. Делать макрос должен следующее - После первого открытия файла (после того как мы уже нажимали ключевые клавиши), макрос должен запустить отсчет времени и через, скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить - здесь не сам пароль важен, а такая замкнутая функция - не знаешь ключевых клавиш, фиг распаролишь.
Прошу не плеваться сильно, я чайник в этих делах))))enchanter
_Boroda_, хорошо, уточню - ключевые клавиши, я имел ввиду те, что были бы назначены в макросе. скажем например: Ctrl+Alt+H+L - при нажатии их одновременно, включало и отключало бы его работу.
_Boroda_, хорошо, уточню - ключевые клавиши, я имел ввиду те, что были бы назначены в макросе. скажем например: Ctrl+Alt+H+L - при нажатии их одновременно, включало и отключало бы его работу.enchanter
Сообщение отредактировал enchanter - Вторник, 15.12.2015, 11:37
скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить
Вешать макрос на отслеживание конкретного времени 300 часов и тем более каждые 2-3 сек - будет сильно глючно и тормозить систему.
Лучше при открытии файла заполнить глобальную переменную временем открытия,: [vba]
Код
Private Sub Workbook_Open() t = Now() End Sub
[/vba] а на модуль листа на событие изменения листа - повесить проверку условия, и если оно соблюдается запаролить лист. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i#, h$ i = 300 ' количество часов If Now() - t > (i \ 24 + (i / 24 - i \ 24)) Then ActiveSheet.Protect Password:=235 MsgBox "Время работы с файлом истекло:" & vbCr & t & vbCr & Now() End If End Sub
скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить
Вешать макрос на отслеживание конкретного времени 300 часов и тем более каждые 2-3 сек - будет сильно глючно и тормозить систему.
Лучше при открытии файла заполнить глобальную переменную временем открытия,: [vba]
Код
Private Sub Workbook_Open() t = Now() End Sub
[/vba] а на модуль листа на событие изменения листа - повесить проверку условия, и если оно соблюдается запаролить лист. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i#, h$ i = 300 ' количество часов If Now() - t > (i \ 24 + (i / 24 - i \ 24)) Then ActiveSheet.Protect Password:=235 MsgBox "Время работы с файлом истекло:" & vbCr & t & vbCr & Now() End If End Sub
SLAVICK, а ну нормально так работает, только у вас время слетает после закрытия файла, а нужно чтоб четко фиксировалось, что время уже истекло и точка и способ остановить работу макроса, например при нажатии определенных клавиш, а то ведь хрен потом будет что доступно в этом файле))).
SLAVICK, а ну нормально так работает, только у вас время слетает после закрытия файла, а нужно чтоб четко фиксировалось, что время уже истекло и точка и способ остановить работу макроса, например при нажатии определенных клавиш, а то ведь хрен потом будет что доступно в этом файле))).enchanter
Ну да. Я так понял что файл не должет быть открыт более определенного времени. Тогда нужно эту переменную заменить на скрытую ячейку. см. вложение. Время прописано в ячейке А1. Если ячейка заполнена время не меняется - если пустая - меняется при открытии файла.
Ну да. Я так понял что файл не должет быть открыт более определенного времени. Тогда нужно эту переменную заменить на скрытую ячейку. см. вложение. Время прописано в ячейке А1. Если ячейка заполнена время не меняется - если пустая - меняется при открытии файла.SLAVICK