|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
требуется сделать поиск по столбцу в защищенном на изменение листе, решил реализовать на фильтрах Код: vbnet 1.
в итоге не получается 2 вещи: установить пароль на лист с возможностью поиска (через фильтры) искать строки/подстроки, состоящие из одних и тех же цифр (например 333) Листинг в полном объеме: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Что примечательно: если файл не закрывать и установить пароль - работает как нужно с возможностью фильтрации, а если перезапустить, то как-будто excel не помнит про AllowFiltering:=True Уважаемые форумчане, помогите осилить сиё тяжкое бремя файл приложил ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 18:12 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артёмфайл приложил упс... файл не подцепился =( завтра приложу ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 20:18 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артёмесли файл не закрывать и установить пароль - работает как нужно с возможностью фильтрации, а если перезапустить, то как-будто excel не помнит про AllowFiltering:=TrueНе помнит код про UserInterfaceOnly. А AllowFiltering работает. Только вот метод AutoFilter еще и устанавливает фильтр, а не только меняет условия фильтрации. А AllowFiltering допускает лишь изменение условий, но не установку фильтра. Видимо, при вызове из VBA данного метода Excel полагает, что фильтр пытаются установить, а не просто изменить условия. Чтобы UserInterfaceOnly работал нормально необходимо защиту устанавливать при открытии книги, т.е. на событие Workbook_Open. Тогда все будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2015, 21:15 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
The_Prist, увы... попытка №2 в аплоуде файла =) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 09:03 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артём, А зачем у Вас там Sheets(1).Unprotect и Sheets(1).Protect? Вы для чего UserInterfaceOnly используете? При таком подходе конечно работать не будет. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:59 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
The_PristКострюков Артём, А зачем у Вас там Sheets(1).Unprotect и Sheets(1).Protect? Вы для чего UserInterfaceOnly используете? При таком подходе конечно работать не будет. The_Prist, в случае перезапуска файла модификатор AllowFiltering отсутствует и требуется пароль для дальнейшей работы, вот и вставил сие чудо дабы избежать надписи "There was a problem when performing the calculation", на самом деле Unprotect-Protect здесь лишние. Как Вы и рекомендовали, я поставил установку пароля на открытие книги - не помогло =(, после перезапуска снова нужен пароль Код: vbnet 1. 2. 3. 4. 5. 6. 7.
И я не могу понять почему из списка {33f, 334, g3g, 333} можно выделить любой элемент, кроме 333 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:22 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артём, Вы не заметили, что окно запроса пароля у Вас не появляется? Знаете почему? Потому что проверка на защиту листа идет. А она лишняя, т.к. лист всегда защищен и строка установки защиты не срабатывает. Следовательно при каждом запуске файла у Вас не устанавливается защита на лист(и параметр UserInterfaceOnly тоже не применяется). Если записать так: Код: vbnet 1. 2. 3. 4. 5.
то все будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:55 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
The_PristКострюков Артём, Вы не заметили, что окно запроса пароля у Вас не появляется? Знаете почему? Потому что проверка на защиту листа идет. Не согласен. У меня проверка выполняется корректно, один раз пароль поставил, при 3 последующих запусках запроса на пароль не было. Кстати эта проверка есть в файле , который я ранее выкладывал, можете попробовать! единственный нюанс - после установки пароля файл нужно сохранить ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:14 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков АртёмНе согласенЕстественно. Вы же прочитали не то, что было написано. Проверка корректно выполняется, я с этим согласен. И именно об этом написал. Что делает проверка? Проверяет - установлена ли защита на лист. Если установлена - то защита не ставится. А она при открытии файла установлена и следовательно не устанавливается заново. А параметр UserInterfaceOnly необходимо устанавливать каждый раз при открытии книги иначе он сбрасывается и ничего работать не будет. Так яснее? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:23 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
The_PristКострюков АртёмНе согласенЕстественно. Вы же прочитали не то, что было написано. Проверка корректно выполняется, я с этим согласен. И именно об этом написал. Что делает проверка? Проверяет - установлена ли защита на лист. Если установлена - то защита не ставится. А она при открытии файла установлена и следовательно не устанавливается заново. А параметр UserInterfaceOnly необходимо устанавливать каждый раз при открытии книги иначе он сбрасывается и ничего работать не будет. Так яснее? это то все понятно. не понятно одно - пользователь должен каждый раз вводить пароль при запуске книги? т.е. те пользователи, у которых не должно быть доступа на запись, вводят пароль и ограничивают себе доступ =) интересное получается кино... знают ли они пароль? думаю это уже риторика... Суть в ограничении доступа на запись "оператору", а "администратор" книги, когда потребуется анлочит ее и забъет туда еще что-нибудь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:54 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артём, так Вы тогда изначально логику файла продумайте нормально. Распределите роли. Иначе как программа будет понимать кто админ, а кто нет? В каком случае запросить пароль, а в каком нет? Вы сами создаете трудности программе и себе. Плюс ко всему, Вы явно опять ничего не попробовали и не разобрались. Пароль на лист какой должен быть? Установите статичный и при открытии книги устанавливайте его при открытии. А админу этот пароль сообщиет и путь при необходимости снимает руками защиту и вносит изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 13:22 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
The_Prist, пароль в скрипте это, конечно, очевидная вещь, но хотелось бы как-нибудь поизящнее, но стандартными средствами - без хардкодерства. Так сказать дешево и сердито. Логика по правке файла очень проста. Первый запуск - установил пароль, сделал изменения, сохранился. Второй запуск уже делает юзверь с доступом на чтение. N-ый запуск. Как только потребовалось поправить файл - запустил файл, снял пароль, поправил, поставил новый. И в идеале реализацию не на уровне NTFS ACL, а в рабочей книге средствами Excel (без "вшитого" в код пароля) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 14:02 |
|
фильтрация и защита на листе
|
|||
---|---|---|---|
#18+
Кострюков Артём, Ну раз дешево и сердито - так и снимайте нормально защиту перед поиском и устанавливайте тоже правильно. А то при открытии установка защиты идет такая: Код: vbnet 1.
а после поиска: Код: vbnet 1.
ни пароля, ни разрешения на фильтрацию...Чего удивляться-то потом, что не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 15:01 |
|
|
start [/forum/topic.php?fid=60&msg=38958771&tid=2155941]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 443ms |
0 / 0 |