Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запаролить файл по времени с интервалами в 2 сек. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запаролить файл по времени с интервалами в 2 сек. (Макросы/Sub)
Запаролить файл по времени с интервалами в 2 сек.
enchanter Дата: Вторник, 15.12.2015, 11:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вообщем реализация не принципиальна, но если кто сможет это сделать, было бы не плохо.
Задача такая. Открываем файл, вставляем макрос, закрываем редактора VBA и нажимаем определенные клавиши для запуска макроса, но запустится он после второго открытия файла.
Делать макрос должен следующее - После первого открытия файла (после того как мы уже нажимали ключевые клавиши), макрос должен запустить отсчет времени и через, скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить - здесь не сам пароль важен, а такая замкнутая функция - не знаешь ключевых клавиш, фиг распаролишь.

Прошу не плеваться сильно, я чайник в этих делах))))
 
Ответить
СообщениеВообщем реализация не принципиальна, но если кто сможет это сделать, было бы не плохо.
Задача такая. Открываем файл, вставляем макрос, закрываем редактора VBA и нажимаем определенные клавиши для запуска макроса, но запустится он после второго открытия файла.
Делать макрос должен следующее - После первого открытия файла (после того как мы уже нажимали ключевые клавиши), макрос должен запустить отсчет времени и через, скажем 300 часов должен запустить следующую функцию. Следующая функция - макрос должен проверять каждые 2-3 сек., запаролен ли файл от изменений, если нет, то запаролить - здесь не сам пароль важен, а такая замкнутая функция - не знаешь ключевых клавиш, фиг распаролишь.

Прошу не плеваться сильно, я чайник в этих делах))))

Автор - enchanter
Дата добавления - 15.12.2015 в 11:19
_Boroda_ Дата: Вторник, 15.12.2015, 11:28 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
не знаешь ключевых клавиш, фиг распаролишь

Клавишу Ескейп знают все. Наверное.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
не знаешь ключевых клавиш, фиг распаролишь

Клавишу Ескейп знают все. Наверное.

Автор - _Boroda_
Дата добавления - 15.12.2015 в 11:28
enchanter Дата: Вторник, 15.12.2015, 11:36 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
_Boroda_, хорошо, уточню - ключевые клавиши, я имел ввиду те, что были бы назначены в макросе. скажем например: Ctrl+Alt+H+L - при нажатии их одновременно, включало и отключало бы его работу.


Сообщение отредактировал enchanter - Вторник, 15.12.2015, 11:37
 
Ответить
Сообщение_Boroda_, хорошо, уточню - ключевые клавиши, я имел ввиду те, что были бы назначены в макросе. скажем например: Ctrl+Alt+H+L - при нажатии их одновременно, включало и отключало бы его работу.

Автор - enchanter
Дата добавления - 15.12.2015 в 11:36
SLAVICK Дата: Вторник, 15.12.2015, 12:13 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
скажем 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
[/vba]
К сообщению приложен файл: 11.xlsm (16.2 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 15.12.2015, 12:15
 
Ответить
Сообщение
скажем 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
[/vba]

Автор - SLAVICK
Дата добавления - 15.12.2015 в 12:13
enchanter Дата: Вторник, 15.12.2015, 12:29 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
SLAVICK, а ну нормально так работает, только у вас время слетает после закрытия файла, а нужно чтоб четко фиксировалось, что время уже истекло и точка и способ остановить работу макроса, например при нажатии определенных клавиш, а то ведь хрен потом будет что доступно в этом файле))).
 
Ответить
СообщениеSLAVICK, а ну нормально так работает, только у вас время слетает после закрытия файла, а нужно чтоб четко фиксировалось, что время уже истекло и точка и способ остановить работу макроса, например при нажатии определенных клавиш, а то ведь хрен потом будет что доступно в этом файле))).

Автор - enchanter
Дата добавления - 15.12.2015 в 12:29
SLAVICK Дата: Вторник, 15.12.2015, 12:44 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
только у вас время слетает после закрытия файла

Ну да. Я так понял что файл не должет быть открыт более определенного времени.
Тогда нужно эту переменную заменить на скрытую ячейку. см. вложение.
Время прописано в ячейке А1.
Если ячейка заполнена время не меняется - если пустая - меняется при открытии файла.
К сообщению приложен файл: 11-1-.xlsm (16.1 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 15.12.2015, 12:46
 
Ответить
Сообщение
только у вас время слетает после закрытия файла

Ну да. Я так понял что файл не должет быть открыт более определенного времени.
Тогда нужно эту переменную заменить на скрытую ячейку. см. вложение.
Время прописано в ячейке А1.
Если ячейка заполнена время не меняется - если пустая - меняется при открытии файла.

Автор - SLAVICK
Дата добавления - 15.12.2015 в 12:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запаролить файл по времени с интервалами в 2 сек. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!