Страницы: 1
RSS
Защита листов за прошлую дату
 
Здравствуйте!  
Необходима помощь вот в каком вопросе. Создан файл для внесения продаж сотрудникам, в файле прописан макрос для открытия листов только за текущую дату, однако скрытые листы можно отобразить и внести за другую дату.  
Как сделать защиту на листы с НЕТЕКУЩЕЙ датой, т.е. за прошедшие дни и будущие?  
За текущий день вносить смогут все продажи, кто откроет этот файл, а за другие дни доступ для редактирования должен быть только у определенных лиц, т.е. сделать админский доступ с привязкой к логину.    
Очень помощь необходима, мастера эксель...  
P.S. Во вложенном файле я указал не 31 день (31 вкладку), а 3 дня 93 вкладки), а то файл весит много в оригинале.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Во вложении файл, где 2 вкладки, а то тот тоже оказался велик, раз модераторы заблокировали.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Вот 3-я попытка, файл весит ровно 100 кб. У меня нет на работе возможности его добавить в архив...
 
Вот так, например: http://www.planetaexcel.ru/forum.php?thread_id=19606
 
Эту фишку я знаю, однако это каким образом откроется скрытый таким образом лист, скажем, за 28.12.2010. Придется же вручную в VBA включать видимость...
 
{quote}{login=stevie4}{date=27.12.2010 01:22}{thema=}{post}У меня нет на работе возможности его добавить в архив...{/post}{/quote}  
На работе нет архиватора... А он нужен?  
Как я понял, вопрос только по запароливанию листа. Зачем в таком случае сотни килобайт? Одна-две строки в двух листах для примера - не выход?
 
А не вариант ли: давать на заполнение один лист-шаблон на отдельную дату в отдельной книге, а потом его переносить/добавлять к "сборной" за месяц, квартал, год?  
27590
 
любая защита на уровне защиты книги будет легко преодолена более-менее грамотным в Excel пользователем. Вы собственно сами наполовину предложили решение. Делаете один файл- одна дата. Админ пишет скрип в котором каждый день прописывается разрешение на изменение файлу с имнем содержащему текущую дату и делает для чтения все остальные. Вопросы доступа ИМХО должен решать админ, а не программист или пользователь.
 
Дело в том, что файлами будут пользоваться 120 человек, и создавать каждый день по 120 файлов тяжеловато... А есть ли сделать так, чтобы текущая дата открывалась без пароля, а на все остальные дни при окрытии листа происходил запрос пароля. Как-нибудь это можно сделать?
 
{quote}{login=stevie4}{date=27.12.2010 02:11}{thema=}{post}Дело в том, что файлами будут пользоваться 120 человек, и создавать каждый день по 120 файлов тяжеловато... А есть ли сделать так, чтобы текущая дата открывалась без пароля, а на все остальные дни при окрытии листа происходил запрос пароля. Как-нибудь это можно сделать?{/post}{/quote}  
причем тут 120 файлов ?  или каждый пользователь работает в своем файле ? Если так то каждому пользователь выдать по каталогу,чтобы не было путаницы. Права выдавать так же. Да и создать 120 файлов тоже минутное дело для скрипта.  
 
PS имея столь большое количество пользователей может стоит подумать об отдельном приложении с общей БД?
 
{quote}{login=Z}{date=27.12.2010 01:37}{thema=}{post}А не вариант ли: давать на заполнение один лист-шаблон на отдельную дату в отдельной книге, а потом его переносить/добавлять к "сборной" за месяц, квартал, год?  
27590{/post}{/quote}  
действительно стоящий вариант. ТС Вам стоит о нем подумать.
 
Если бы это было в моей компетенции, то приложение обязательно бы было. А что касается доступов и скриптов, то в связи с тем, что компания у нас большая, это все нужно согласовывать с IT, делать заявки, что отнимает уйму времени. Поэтому и хочется сделать проще, но свое, чтобы мы не зависили от других департаментов. Именно поэтому я обратился за помощью на планетуэксель... И я понимаю, что сделать это можно, защитив все даты, кроме текущей, но нужно писать макрос, а макрос такого рода своими силами написать смог...
 
{quote}{login=stevie4}{date=27.12.2010 02:11}{thema=}{post}чтобы текущая дата открывалась без пароля, а на все остальные дни при окрытии листа происходил запрос пароля.{/post}{/quote}  
1. "Чтобы текущая дата..." - Значит на каждом листе должна быть своя "текущая дата".  
2. "на все остальные дни при окрытии листа" - А каким образом будет происходить открытие, если листы скрыты и защищены? Ведь Вы отказались от предложения Казанского: "Придется же вручную в VBA включать видимость..."  
3. Присоединяюсь к вопросу Виктора - на фига столько информации и форматирования в файле, если достаточно одной ячейки с датой?
 
См. вариант. Алгоритм следующий: на каждом листе есть "своя" дата. При открытии книги будет отображён тот лист, дата на котором совпадает с текущей. Кроме того, будет выведен запрос на открытие других листов. Пользователь должен выбрать нужный лист и ввести пароль - будет отображён и этот лист. Пароль на все листы: 123
 
{quote}{login=Юрий М}{date=27.12.2010 08:45}{thema=}{post}См. вариант. Алгоритм следующий: на каждом листе есть "своя" дата. При открытии книги будет отображён тот лист, дата на котором совпадает с текущей. Кроме того, будет выведен запрос на открытие других листов. Пользователь должен выбрать нужный лист и ввести пароль - будет отображён и этот лист. Пароль на все листы: 123{/post}{/quote}  
 
Спасибо, большое!) Вот это вариант намного лучше, чем мой :)  
Только непонятна следующая вещь, я изменил пароль в файле и текст в окне, для ввода пароля. При вводе правильного пароля выдает ошибку... Как ее исправить и почему она появляется, я так и не понял... Файл во вложении.
 
Попробуйте сначала снять защиту со всех листов старым паролем (123), затем установите новый (свой)- макрос должен заработать.
 
Спасибо, макрос заработал :)  
Только вопрос снова, а как убрать в макросе появление листа "Общий"? А то он появляется вместе с текущим :)
 
Удалите этот лист. В модуле Книги найдите строку:  
For i = 1 To Sheets.Count - 1  
и измените её так:  
For i = 1 To Sheets.Count
 
{quote}{login=Юрий М}{date=28.12.2010 01:45}{thema=}{post}Удалите этот лист. В модуле Книги найдите строку:  
For i = 1 To Sheets.Count - 1  
и измените её так:  
For i = 1 To Sheets.Count{/post}{/quote}  
 
Всем большое спасибо за помощь, особенно Юрий М :) Очень помогли!
 
Всем привет!  
Вопрос по работе файла.  
При открытии файла сейчас, выдает ошибку, и открывается 28.12.2010, а не текущая дата: "Нельзя установить свойство Visible класса Worksheet"  
 
Ошибка, как я понял, в строке: Sheets(i).Visible = 2    
 
Я открываю макрос, меняю строку Sheets(i).Visible = 2 на Sheets(i).Visible = 0 , работает. А затем вновь меняю Sheets(i).Visible = 0 на Sheets(i).Visible = 2 , и снова работает. Но боюсь начинает работать только сегодня, пока текущая дата, а завтра вновь будет ошибка... С чем это связано может быть?
 
Косяка в макросе самом нет. Ошибка скорее тут, только я не пойму, что это, может подскажете:  
Enable Selection  и далее выбираем, либо No Restrictions (без ограничений) и Unlocked Cells .    
За что отвечает Enable Selection ? И что означает Unlocked Cells ?  
дело в том, что в файле Юрий М все листы обозначены No Restrictions , а в моем файле некоторые No Restrictions, а некоторые    
Unlocked Cells . В этом ли ошибка? Я просто с английским не очень дружу. :)
 
{quote}{login=stevie4}{date=30.12.2010 12:36}{thema=}{post}Косяка в макросе самом нет. Ошибка скорее тут, только я не пойму, что это, может подскажете:  
Enable Selection  и далее выбираем, либо No Restrictions (без ограничений) и Unlocked Cells .    
За что отвечает Enable Selection ? И что означает Unlocked Cells ?  
дело в том, что в файле Юрий М все листы обозначены No Restrictions , а в моем файле некоторые No Restrictions, а некоторые    
Unlocked Cells . В этом ли ошибка? Я просто с английским не очень дружу. :){/post}{/quote}  
Enable Selection - разрешить выделение защищенных ячеек, Unlocked Cells - ячеки, которые не защищаются паролем.. ?
 
особо не вникал в смысл, но ошибка похоже вызывается тем, что вы пытаетесь ЕДИНСТВЕННЫЙ видимый лист сделать невидимым. Решение - сначала сделать видимым тот лист который нужен, а только потом уже скрыть тот лист, о котором идет речь
 
Вновь эта эта же ерунда... Сегодня 31 число, а окрыто 30-е... Мне нужно, чтобы открывалась текущая дата, а выдает ошибку...
 
Давайте файл
 
{quote}{login=Юрий М}{date=31.12.2010 08:08}{thema=}{post}Давайте файл{/post}{/quote}  
 
Вот файл, Юрий.    
Сейчас откроется, т.к. я сначала открыл все листы поменяв на 1, а затем снова на 2. А завтра вновь будет 31 декабря...
 
Либо вот ссылка на файл в 2003 Excel . Я не прочитал в правилах, можно ли ссылки указывать на форуме, но уж не обессудьте, в рамках исключения ) А то мой файл весит в 2003 более 100 кб. http://ifolder.ru/21103678
 
Юрий, починил файл :) Все работает, а проверил его путем изменения даты в биосе, дата в файле также менялась. Спасибо большое за помощь и отзывчивость. С наступающим Новым годом!
 
{quote}{login=stevie4}{date=31.12.2010 10:09}{thema=}{post}Юрий, починил файл :){/post}{/quote}  
И Вас с наступающим! А в чём заключался "ремонт"?
 
Ремонт был именно в файле, который я сделал по примеру вашего, Юрий. Только в моем варианте у меня были ошибки с настройкой видимости листов, а у вас нет. Я сделал по аналогии, все заработало)))
Страницы: 1
Наверх