Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2017, 19:16   #1
Kizim
Пользователь
 
Регистрация: 01.07.2017
Сообщений: 17
По умолчанию можно ли блокировать работу документа EXCEL по дате

Можно ли сделать так, чтоб определённого числа месяца автоматически блокировался код Visual Basic в EXEL и ввод данных на листы. Тоесть чтоб документ был доступен только для чтения и ничего больше; и чтоб выдавалось сообщение при попытке открыть форму ввода "Ввод данных запрещён" или "Наступил Новый год - документ закрыт"?
Kizim вне форума Ответить с цитированием
Старый 05.07.2017, 21:59   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Да, можно.
Например, если у вас форма ввода на некотором листе, то для этого листа можно написать макрос, который будет блокировать ввод данных начиная с даты Х. При этом лист будет просматриваться.
Больше того, можно на этой форме задать области, для которых изменение данных будет запрещено начиная с некоторой даты X, а для других областей - с даты Y.
PS: Понимаю так, что вам нужен сам макрос. С этим помочь пока не могу.
Предлагаю поискать в сетях и почитать ...
Что-то вроде такого ...
Код:
Sheets("Prilogenie").Unprotect 
Sheets("Titul").Protect UserInterfaceOnly:=True 
Sheets("Prilogenie").Protect UserInterfaceOnly:=True
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 07.07.2017, 11:22   #3
Kizim
Пользователь
 
Регистрация: 01.07.2017
Сообщений: 17
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Да, можно.
Например, если у вас форма ввода на некотором листе, то для этого листа можно написать макрос, который будет блокировать ввод данных начиная с даты Х. При этом лист будет просматриваться.
Больше того, можно на этой форме задать области, для которых изменение данных будет запрещено начиная с некоторой даты X, а для других областей - с даты Y.
PS: Понимаю так, что вам нужен сам макрос. С этим помочь пока не могу.
Предлагаю поискать в сетях и почитать ...
Что-то вроде такого ...
Код:
Sheets("Prilogenie").Unprotect 
Sheets("Titul").Protect UserInterfaceOnly:=True 
Sheets("Prilogenie").Protect UserInterfaceOnly:=True
Цитата:
Сообщение от ViktorR Посмотреть сообщение
Да, можно.
Например, если у вас форма ввода на некотором листе, то для этого листа можно написать макрос, который будет блокировать ввод данных начиная с даты Х. При этом лист будет просматриваться.
Больше того, можно на этой форме задать области, для которых изменение данных будет запрещено начиная с некоторой даты X, а для других областей - с даты Y.
PS: Понимаю так, что вам нужен сам макрос. С этим помочь пока не могу.
Предлагаю поискать в сетях и почитать ...
Что-то вроде такого ...
Код:
Sheets("Prilogenie").Unprotect 
Sheets("Titul").Protect UserInterfaceOnly:=True 
Sheets("Prilogenie").Protect UserInterfaceOnly:=True

Переискал всё но то, что мне нужно не нашёл. А можете помочь таким макросом: При нажатии на "Ввод данных " открывается Форма_1 а 31.12. в 00:00 открывается форма_2. Я понимаю, что это можно как-то через оператор IF/ например если на компьютере меньше 31.12. 00:00 то форма_1 а если больше то форма_2.
Вложения
Тип файла: xls Получение товара.xls (173.0 Кб, 11 просмотров)
Kizim вне форума Ответить с цитированием
Старый 07.07.2017, 11:46   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kizim Посмотреть сообщение
и чтоб выдавалось сообщение при попытке открыть форму ввода "Ввод данных запрещён" или "Наступил Новый год - документ закрыт"?
простите, а что-то помешает пользователю переустановить дату на прошлый год, изменить документ, вернуть дату ?

p.s. я знаю, что смену даты на компьютере можно запретить политиками безопасности.
но я не знаю, что помешает скопировать файл туда, где этих политик безопасности нет, там изменить дату, изменить документ и вернуть документ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2017, 12:21   #5
Kizim
Пользователь
 
Регистрация: 01.07.2017
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
простите, а что-то помешает пользователю переустановить дату на прошлый год, изменить документ, вернуть дату ?

p.s. я знаю, что смену даты на компьютере можно запретить политиками безопасности.
но я не знаю, что помешает скопировать файл туда, где этих политик безопасности нет, там изменить дату, изменить документ и вернуть документ.
Это уже другой вопрос. Да и кто будет знать, что код написан именно так. Можно выдать форму с надписью "Доступ запрещён - вирус . обратитесь к разработчику" . И кто будет знать, что код написан по дате. Меня интересует сам макрос, чтоб именно так работал. А дальше посмотрим. Вы можете помочь?
Kizim вне форума Ответить с цитированием
Старый 07.07.2017, 13:41   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kizim Посмотреть сообщение
А дальше посмотрим. Вы можете помочь?
до 1 июля 2017 года можно вводить, потом - сообщение о новом годе
Код:
Sub ДобавитьЗапись()
    If Date < DateSerial(2017, 7, 1) Then
      UserForm1.Show
    Else
      UserForm2.Show
    End If
End Sub

Цитата:
Сообщение от Kizim Посмотреть сообщение
И кто будет знать, что код написан по дате.
во-первых, нельзя недооценивать пользователя.
во-вторых, дата на компьютере (особенно если нет ЛВС и домена) может быть сбита
в-третьих, пользователь может открыть исходный код макроса и посмотреть там
(впрочем, это как раз можно закрыть с помощью пароля на проект).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2017, 15:30   #7
Kizim
Пользователь
 
Регистрация: 01.07.2017
Сообщений: 17
По умолчанию

Спасибо - Решено

Последний раз редактировалось Kizim; 07.07.2017 в 18:52.
Kizim вне форума Ответить с цитированием
Старый 07.07.2017, 15:33   #8
Kizim
Пользователь
 
Регистрация: 01.07.2017
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
до 1 июля 2017 года можно вводить, потом - сообщение о новом годе
Код:
Sub ДобавитьЗапись()
    If Date < DateSerial(2017, 7, 1) Then
      UserForm1.Show
    Else
      UserForm2.Show
    End If
End Sub


во-первых, нельзя недооценивать пользователя.
во-вторых, дата на компьютере (особенно если нет ЛВС и домена) может быть сбита
в-третьих, пользователь может открыть исходный код макроса и посмотреть там
(впрочем, это как раз можно закрыть с помощью пароля на проект).
Спасибо вам большое за код. Всё гениальное просто. И вы правы пользователя нельзя недооценивать. Тогда встречный вопрос: Как сделать, чтоб программа работала только например 100 дней?
Kizim вне форума Ответить с цитированием
Старый 07.07.2017, 15:53   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Kizim Посмотреть сообщение
Тогда встречный вопрос: Как сделать, чтоб программа работала только например 100 дней?
Надёжно?
Понятия не имею.

Если можно - привязывайте выполнение программы к наличию доступа в Интернет и берите СУЩЕСТВЕННЫЕ данные для работы из интернета. Нет данных - не работает программа. но, разумеется, не будет интернета, не будет работать программа.
Тогда на сервере достаточно надёжно можно блокировать работу хоть по дате, хоть по количеству дней.

Ещё есть привязка к электронным ключам защиты. Но, боюсь, что в связке с Excel это будет не очень удобно и надёжно. Впрочем, это ДОРОГОЕ решение.

ну и последнее.

Почитайте/вспомните анекдот про неуловимого Джо и подумайте, не переоцениваете ли Вы вашу программу.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2017, 16:58   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Может оценивается не программа, а удобства работы? Например, автор автоматизировал бОльшую часть рутины и не хочет чтобы сменщику была жизнь-малина.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли сделать основу html документа? Lagmis-ar Общие вопросы Web 5 14.04.2017 13:42
Заполнение документа Excel по шаблону из базы даных Excel Сергей Цахло Microsoft Office Excel 16 08.09.2015 10:27
Создание документа на каждый день с возможностью просматривания по дате vindizel Microsoft Office Excel 9 01.02.2011 09:43
Фильтр по дате Otlook из Excel Rojohn Microsoft Office Excel 0 05.10.2010 13:24
Подскажите где можно прочитать про работу С++ с word и excel VIN_Gamma Общие вопросы C/C++ 0 07.04.2009 18:57