Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Как защитить ячейки от возможности заполнения их копированием?

Автор ГДД, 12.05.2012, 14:15:18

« назад - далее »

ГДД

Добрый день.

Проблема следующая:
есть форма отчета, которую необходимо заполнять разным пользователям. Далее отчеты консолидируются в общий файл. Ячейки в шаблоне формы посредством "Проверки данных" защищены от некорректного внесения данных, лист защищен паролем с запретом форматирования ячеек. Однако при копировании данных из другой книги в ячейки, никакая защита не срабатывает, в итоге получаем кучу отчетов с разноформатными, а иногда и абсолютно некорректными данными.

Вопрос:
как можно защитить открытые для внесения данных ячейки от возможности копирования в них данных из другого источника, т. е. оставить возможность только ручного их заполнения?

Дмитрий Щербаков(The_Prist)

Только макросом. Блокируем в этом файле возможность вставки в ячейки данных из буфера обмена. Или сверяем со списком введенные данные и если не подходят под критерии - отменяем всатвку из буфера.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

ГДД

Беда. В том смысле, что мои познания в макросах ограничиваются Alt+F11 и Ctrl+C, Ctrl+V. Да и, собственно, в программировании как таковом.
Мжет быть, где-то можно поискать готовый макрос по этой проблеме? Я б спер...

Дмитрий Щербаков(The_Prist)

Вот, набросал запрет вставки из буфера обмена. См. вложение.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

ГДД

Что сказать - спасибо Вам огромное, уже второй раз здорово помогаете!

JRV

Работает в пределах приложения. Можно вставить из любого другого, например, блокнота.
Даже в самом приложении(Enter после копировани)

Дмитрий Щербаков(The_Prist)

Такой задачи и не ставилось - почитайте внимательно. Человеку надо было, чтобы ячейки не копировались полностью, но можно было копировать произвольный текст. Чтобы наглухо запретить любую вставку достаточно убрать из кода условие:
If .CutCopyMode Then

Ну а в принципе нет универсальных решений для защиты от копирования. Если кому-то надо будет - обойдут. Можно тупо макросы запретить и все.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Виталий_

[gmod]кнопка цитированияне для ответа[/gmod]
А как защитить любую вставку кроме значений из выпадающего списка?
Т.е. чтобы пользователю остался только лишь один вариант - выбрать нужное значение из выпадающего списка.
Чтобы другим способом он эту ячейку заполнить никак не мог, только значения из выпадающего списка.

Заранее благодарен.

kuklp

Дим и вставлять же можно не только ctrl+v. Можно скопировать и в нужном месте нажать Энтер. При этом CutCopyMode будет 0. Как вариант помню, запоминал диапазон предыдущих значений в глобальный массив(кому-то на форуме), но это тоже некузяво.
Цитата: Виталий_ от 05.09.2017, 09:21:00как защитить любую вставку кроме значений из выпадающего списка
просто - защитить ячейки и запаролить лист с userinterfaceonly.
kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728

Дмитрий Щербаков(The_Prist)

Цитата: kuklp от 05.09.2017, 15:12:12защитить ячейки и запаролить лист с userinterfaceonly
Серега, не поможет. Тогда изменить данные в этой ячейке через выпадающий список(Данные -Проверка данных -Список) будет невозможно. Как я понял используется именно такой список, иначе вопроса бы не было.

Поэтому выход-то только один: мониторить ячейки или буфер. И то и другое дело муторное и всегда есть возможность того, что пользователь откроет файл с запретом на выполнение макросов :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

kuklp

Ну да, я невнимательно прочитал, что менять нельзя именно эту ячейку. Почему -то решил, что эта ячейка влияет на изменение других и в них нельзя иначе вводить ничего :) Ну одну-то ячейку промониторить несложно, пока
Цитата: The_Prist от 05.09.2017, 15:37:28
пользователь не откроет файл с запретом на выполнение макросов :)
kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728

hr.al

Цитата: Дмитрий Щербаков(The_Prist) от 21.12.2015, 21:13:50
Такой задачи и не ставилось - почитайте внимательно. Человеку надо было, чтобы ячейки не копировались полностью, но можно было копировать произвольный текст. Чтобы наглухо запретить любую вставку достаточно убрать из кода условие:
If .CutCopyMode Then

Ну а в принципе нет универсальных решений для защиты от копирования. Если кому-то надо будет - обойдут. Можно тупо макросы запретить и все.

Добрый день. Посдкажите, пжлст, как в этом коде прописать еще и вызов сообщения типа "вставка из буфера запрещена"?
Спасибо!

vikttur


Яндекс.Метрика Рейтинг@Mail.ru