Excel vba запрет на вставку

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

Доброе всем утро!
Хочу запретить копирование-вставку данных на листе
Защитить не могу, потому что НУЖНО, чтобы юзер вводил данные в такие ячейки вручную
Как отрубить контекстное меню разобралась
Еще бы клавиши отключить: ctrl + c, например. Нашла в справке вот такую команду:
Application.OnKey «+^{RIGHT}», «»
Она блокирует комбинацию клавиш ctrl + shift + вправо. Подскажите, пожалуйста, как ее переделать, чтобы не выполнялись команды клавиш ctrl + c/x/v ?

В полете голова — важнее крыльев

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Думаю если прочтёте справку по команде SENDKEY то разберётесь.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#3

07.05.2014 10:14:14

Цитата
Li$$@ пишет:  НУЖНО, чтобы юзер вводил данные в такие ячейки
вручную

А кая разница как он вводит вручную или вставкой если ручки кривые дак и руками вам введет не то

Лень двигатель прогресса, доказано!!!

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

Уже догадалась знак + убрать  :)  Правда, поняла, что команда на ленте остается и вот досада — работает. Посоветуйте, пожалуйста, что можно глянуть, чтобы и команду на ленте отключить …

В полете голова — важнее крыльев

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, а если попробовать привязать к этим кнопкам макросы? Допустим, при нажатии этих клавиш запускается макрос и вылетает окно: «Так делать низя»  :)  или «Введите данные вручную».

Изменено: Smiley07.05.2014 10:19:29

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#6

07.05.2014 10:18:51

Цитата
Сергей пишет:
А кая разница как он вводит вручную или вставкой если ручки кривые дак и руками вам введет не то

Большая разница, Сергей, в ячейке — выпадающий список, который, к сожалению, только ограничивает ввод данных, но спокойно дает в такую ячейку данные вставлять.

В полете голова — важнее крыльев

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#7

07.05.2014 10:20:29

Цитата
Smiley пишет:  …при нажатии этих клавиш запускается макрос и вылетает окно: «Так делать низя»ы?

Smiley , спасибо, мысль чудесная — я думаю, именно так и застращаю своих юзеров, и вебку на комп — и фотоотчет их удивленных и огорченных физиономий выложу ))

В полете голова — важнее крыльев

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, только смотрите, чтобы они потом все руками не делали :)

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#9

07.05.2014 10:25:27

Цитата
Li$$@ пишет: … что можно глянуть, чтобы и команду на ленте отключить …

Остался еще вот этот вопрос — помогите, пожалуйста, понять — где искать возможность запретить копирование данных с помощью команд на ленте?

В полете голова — важнее крыльев

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, а копирование данных может быть произведено из этой же книги или из другой? Если из другой, то можно просто запретить открытие любой книги, кроме активной.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#11

07.05.2014 10:54:57

Цитата
Li$$@ пишет:
но спокойно дает в такую ячейку данные вставлять.

Можно в обработчик Worksheet_SelectionChange записать проверку на вставляемые/вводимые данные в определенные ячейки. Этот вариант по моему проще, чем заморачиваться с отключением кнопок на вкладках ленты (для интерфейсов 2007 и старше это возможно только упражняясь с RibbonX). ИМХО.
Опять-же для совместимости с младшими версиями (если это надо конечно) необходимо предусмотреть отключение этих кнопок на старых панелях инструментов.

Изменено: Sanja07.05.2014 11:01:15

Согласие есть продукт при полном непротивлении сторон.

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#12

07.05.2014 10:58:14

Цитата
Smiley пишет:
Li$$@ , а копирование данных может быть произведено из этой же книги или из другой? Если из другой, то можно просто запретить открытие любой книги, кроме активной.

Возможны оба варианта, но чаще — из текущей же с этого же листа

В полете голова — важнее крыльев

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#13

07.05.2014 11:00:41

Цитата
Sanja пишет:
Можно в обработчик Worksheet_SelectionChange записать проверку на вставляемые/вводимые данные в определенные ячейки.

Спасибо за идею, сначала взбодрило, но потом поняла, что они (любимые юзеры) копируют целые строчки и потом ЗАБЫВАЮТ менять в них данные — а они же уже типо заполнены, причем — данными из списка же
Поэтому единственно приемлемый вариант в моем случае — заблокировать копипастинг, чтобы без вариантов — данные вносились в пустые ячейки вручную либо с помощью выпадающих списков

В полете голова — важнее крыльев

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

Кажется, в книженции Уокенбаха нашла раздел Управление лентой с помощью VBA — попробую почитать
Всем спасибо большое и хорошего дня :)

В полете голова — важнее крыльев

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#15

07.05.2014 11:03:09

Цитата
Li$$@ пишет:
Спасибо за идею, сначала взбодрило, но потом поняла

А Вы бы уже примерчик файла выложили, а мы постараемся помочь поконкретнее  ;)

Согласие есть продукт при полном непротивлении сторон.

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

тымс

Учимся сами и помогаем другим…

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

ber$erk,там про кнопки на ЛЕНТЕ ничего не сказано  ;)

Согласие есть продукт при полном непротивлении сторон.

 

ber$erk

Пользователь

Сообщений: 2735
Регистрация: 25.12.2012

#18

07.05.2014 11:09:07

Цитата
Для того, чтобы в нужной рабочей книге «заблокировать» использование команд Вырезать, Копировать, Вставить, Специальная вставка и Формат по образцу, а также горячих клавиш CTRL+X, CTRL+C, CTRL+V ….

а это что?

Учимся сами и помогаем другим…

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#19

07.05.2014 11:10:34

Цитата
Sanja пишет:
А Вы бы уже примерчик файла выложили, а мы постараемся помочь поконкретнее

Я попробую вычитать че-нить полезное-дельное по моему вопросу и ежели ничего не выйдет, воспользуюсь этим предложением
Еще раз — спасибо :)

В полете голова — важнее крыльев

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

#20

07.05.2014 11:16:39

Цитата
ber$erk пишет:
Для того, чтобы в нужной рабочей книге «заблокировать» использование команд Вырезать, Копировать, Вставить, Специальная вставка и Формат по образцу , а также горячих клавиш CTRL+X, CTRL+C, CTRL+V ….а это что?

Проверила — рамка копирования не появляется при выполнении команды меню и нажатии на клавиши, но ленту не блокируют

В полете голова — важнее крыльев

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, а почему бы не запретить редактировать все ячейки, кроме используемых? Можно ведь выбрать редактируемые диапазоны, тогда никто не сможет скопировать.

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

Потому что в используемых ячейках НУЖНО вводить данные вручную (в частности — из выпадающих списков), и нельзя в них вставлять скопированные данные, только ручной ввод (когда забывают изменить скопированные данные — это ОЧЕНЬ плохо, это критично)

В полете голова — важнее крыльев

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#23

07.05.2014 11:19:22

Цитата
ber$erk пишет: а это что?

да собственно вот оно

Цитата
Li$$@ пишет: но ленту не блокируют

:)

Согласие есть продукт при полном непротивлении сторон.

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, посмотрите

эту

тему, может быть найдете для себя что-нибудь нужное.

 

Li$$@

Пользователь

Сообщений: 152
Регистрация: 31.01.2013

Вот файлик — они берут, копирую 4-ую строку, вставляют в пятую и ЗАБЫВАЮТ менять Код, например
Нужно — чтобы во все три столбца данные вносились только вручную, без копирования
При этом нужно оставить возможность вставить строку внутри таблицы

Я сюда уже вставила коды, которые блокируют клавиши и контекстное меню, но вопрос использования команд на ленте все еще актуален :(

Прикрепленные файлы

  • Книга1.xlsm (14.21 КБ)

В полете голова — важнее крыльев

 

Smiley

Пользователь

Сообщений: 530
Регистрация: 16.05.2013

Li$$@, доступ к коду тоже, как мне кажется, надо заблокировать или усложнить, а то мало ли найдутся умельцы. Имхо.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#27

07.05.2014 12:34:16

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

Прикрепленные файлы

  • Код.xlsm (15.9 КБ)

Согласие есть продукт при полном непротивлении сторон.

Макрос на запрет вставки через ctrl+v

Николай_89

Дата: Вторник, 04.09.2018, 08:58 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Всем доброго времени суток! Помогите пожалуйста! Есть макрос на блокировку вставки через ctrl+v, нашёл на каком-то сайте! проблема в том что он либо глючиный либо не правильно вставляю! действие его расспространяется не только на книгу но на всё что открыто в формате Эксель! помоготе исправить ошибку! макрос нужно использовать в 68 книгах! макрос вот Всем большое спасибо!
[vba]

Код

Private Sub Workbook_Open()
Dim cbBar As CommandBar
With Application
.OnKey «^{v}», «MyPaste»
.OnKey «+{INSERT}», «MyPaste»
For Each cbBar In .CommandBars
On Error Resume Next
cbBar.Controls(«Вст&авить»).OnAction = «MyPaste»
Next cbBar
‘ With CommandBars(«Cell»).Controls.Add(Type:=msoControlButton, Before:=1)
‘ .OnAction = «MyPaste»
‘ .FaceId = 22
‘ .Caption = «Вставить значение»
‘ End With
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘восстанавливаем всё на место при выходе
Dim cbBar As CommandBar
With Application
.OnKey «^{v}»
.OnKey «+{INSERT}»
For Each cbBar In .CommandBars
On Error Resume Next
cbBar.Reset
Next cbBar
End With
End Sub

[/vba]

Сообщение отредактировал Николай_89Вторник, 04.09.2018, 09:06

 

Ответить

_Boroda_

Дата: Вторник, 04.09.2018, 09:01 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

— Прочитайте Правила форума
— Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

И файл не приложился — max 100 кг. Но это не обязательно, и так все понятно.
Да, еще — этот макрос, судя по всему, написан для 2003 Excel, а в 2007 и выше в меню вставки на правой кнопке мыши не только «Вставить», но и еще куча всего для вставки


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

 

Ответить

Pelena

Дата: Вторник, 04.09.2018, 09:03 |
Сообщение № 3

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

[offtop]
Есть надежда, что сам автор и ответит :)
Когда замечания устраните[/offtop]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:08 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Сомневаюсь! уже неделю бьюсь по форумам Все молчат! а нужно ооочень!

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:11 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

через что бы через мышку не смогли вставлять, это уже заоблочно! хотя бы это поправить! по тому что работать будут муницыпалы! а там не великие хакеры! увидят что так нельзя пытаться мышкой не будут!

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:11 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Хотя если есть у кого вариант решения моей проблемы выслушаю с удовольствием!

 

Ответить

_Boroda_

Дата: Вторник, 04.09.2018, 09:16 |
Сообщение № 7

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Замените Workbook_Open на Workbook_Activate
и Workbook_BeforeClose на Workbook_Deactivate

Сейчас у Вас что получается? Вы открываете книгу с макросомWorkbook_Open и этот макрос для всего Excel убирает возможность Контрл+v и Контрл+Инсерт (ну и до кучи пытается что-то поменять на панели инструментов). И будет этот запрет висеть до того момента, пока Вы книгу не закроете, тогда отрабатывает макрос Workbook_BeforeClose, возвращающий все взад
А если включать запрет только если книга активирована и выключать при деактивации, то по идее должнен быть запрет только тогда, когда с этой книгой работают

Кстати да, те макросы, которые были, оставьте тоже. У Вас тогда будет не 2, а 4 макроса

А лучше вообще вот так написать
[vba]

Код

Private Sub Workbook_Activate()
    vkl
End Sub
Private Sub Workbook_Open()
    vkl
End Sub

Private Sub Workbook_Deactivate()
    vykl
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    vykl
End Sub

Sub vkl()
    With Application
        .OnKey «^{v}», «MyPaste»
        .OnKey «+{INSERT}», «MyPaste»
    End With
End Sub
Sub vykl()
    With Application
        .OnKey «^{v}»
        .OnKey «+{INSERT}»
    End With
End Sub

[/vba]

***
Поправил Workbook_BeforeClose


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

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:28 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Не помогло

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:29 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Вот он в экселе

К сообщению приложен файл:

4027060.xls
(31.0 Kb)

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:31 |
Сообщение № 10

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Или стоп! сейчас еще раз проверю вроде работает!

 

Ответить

_Boroda_

Дата: Вторник, 04.09.2018, 09:34 |
Сообщение № 11

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Я там дописал выше. Чтобы «помогло», нужно закрыть тот файл и открыть его заново

И да, там еще должно быть что-то с именем «MyPaste»

***
Довложил файл


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

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:36 |
Сообщение № 12

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Даааа Boroda!!!! Мужик спасибо!! извини за наглость а вариант отключения вставки через пкм существует?

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 09:40 |
Сообщение № 13

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Так Получается то что вы до писали мне это всё вставить на месчто того что было!? да есть стоит в модуле ругательство для тех кто по пытается вставить)))

 

Ответить

Николай_89

Дата: Вторник, 04.09.2018, 10:10 |
Сообщение № 14

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Boroda спасибо большущее тебе! Дай бог здоровья!)

 

Ответить

Nic70y

Дата: Вторник, 04.09.2018, 21:07 |
Сообщение № 15

Группа: Друзья

Ранг: Экселист

Сообщений: 8132


Репутация:

1998

±

Замечаний:
0% ±


Excel 2010


[vba]

Код

Sub Макрос1()
‘ Сочетание клавиш: Ctrl+м
    Application.CutCopyMode = False
End Sub
Sub Макрос2()
‘ Сочетание клавиш: Ctrl+v
    Application.CutCopyMode = False
End Sub

[/vba]а так смешнее :)


ЮMoney 41001841029809

 

Ответить

bigor

Дата: Вторник, 04.09.2018, 22:32 |
Сообщение № 16

Группа: Проверенные

Ранг: Ветеран

Сообщений: 801


Репутация:

163

±

Замечаний:
0% ±


нет

про Ctrl+ShiftAlt+v забыли :)

Сообщение отредактировал bigorСреда, 05.09.2018, 09:11

 

Ответить

Николай_89

Дата: Среда, 05.09.2018, 08:46 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

А вставку через ПКМ можно блокировать как нибудь?

 

Ответить

_Boroda_

Дата: Среда, 05.09.2018, 09:43 |
Сообщение № 18

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Можно. Но Николай_89, Вы бы объяснили поподробнее, зачем Вам все это нужно. И зачем Вам ограничивать вставку в ВЕСЬ файл? Наверняка есть какой-то диапазон, который Вы пытаетесь таким образом защитить. Почему вдруг возникла такая мысль?
Короче, Вы неправильно вопрос задаете — не нужно спрашивать «Как запретить вставку», это только один из методов решения, а нужно примерно вот так: «Что делать, если в файле юзвери вставкой портят …» (предположу, формат, что проверку данных или условное форматирование)


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

 

Ответить

Николай_89

Дата: Среда, 05.09.2018, 13:36 |
Сообщение № 19

Группа: Пользователи

Ранг: Новичок

Сообщений: 21


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Да существует файл а точнее их 68 шт! а в этом файле часть через проверку данных, часть данных нужно вводить исключительно ручкамии! и так как на месте работают как молодёжь (ушлая), так и более приклонный возраст мной было решено ограничить по максимуму функцию вставки! для получения однообразных данных! а получается что ограничить могу только макросом который Вы мне помогли отредактировать!

 

Ответить

_Boroda_

Дата: Среда, 05.09.2018, 13:42 |
Сообщение № 20

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Вот с этого и нужно было начинать
Просто в модуль листа
[vba]

Код

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = 0
End Sub

[/vba]


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

 

Ответить

Как запретить copy-paste на листах эксель?
Есть сложный документ, нагруженый форматируемыми ячейками, условными форматами и т.п. мутью. Часто возникает необходимость переностить данные из одного файла эксель в этот крутой, и ясен пень, особогениальные сотрудники делают это методом копи-пейст. При этом слетают условные форматирования, форматы ячеек — я уж молчу про границы и заливки. Вербальные и даже анальные внушения на предмет того точбы это не делать и перености рукаи не помогют — собственно хоче запретить это в самом файле.

Желательно чтобы выводилось сообщение о запрете или что-то в этом духе.


можно убрать возможность выделения ячеек, соответственно нельзя «в лоб» выделить и скопировать ячейки
В екселе 2003: пункт меню Сервис-Защита-Защитить лист и настраиваешь защиту по пунктам
В екселе 2007: вкладка Главная-блок Ячейки -Формат — Защитать лист… и настраиваешь защиту по пунктам

учти, что по умолчанию в формате ячеек по умолчанию включена защита ячейки (правая кнопка мышки по ячейке — Формат ячеек…- вкладка Защита)


Этот вариант совсем не катит — потому что должна оставатся возможность вносить значения РУКАМИ. Простыми, трудовыми, намазолеными менеджерскими руками… но БЕЗ возможности вставлять из буфера… ИЛИ если вставлять — то ТОЛЬКО значение — без форматирований, размеров текстов и т.п. чуши


Поппробуйте научить сотрудников вставлять только значения (ПКМ / специальная вставка) — эту функцию можно вывести на панельку и переназначить на нее сочетание клавишь Ctrl+V (если очень нужно). Но эту работу придется выполнять на каждой пользовательской машине.
Возможно VBA позволит сделать это лишь для указзанного файла.


Это как раз то что я сделал в первую очередь — запретил пользоваться обычной вставкой и научил юзать специальную. НО! выяснилось что даже при использовании специальной вставки вставляется не только значение но и условное_форматирование. Другими словами — действительно, вставляется только значение, но при этом впихивается и условное_форматирование… ИМХО это просто недоработка самого экселя — единственное решение которое я вижу это просто запретить использовать copy-paste полностью. Но если лист имеет структуру, защищён так чтобы часть ячеек редактировать а часть нет — то сделать это простыми методами нельзя… Мне бы подошёл и сложный — лишь бы он был…


Посмотрите такой вариант.
Кнопка на панели инструментов, в меню по ПКМ, комбинации Ctrl+v и Shift+Insert переназначены на вставку только значений, условное_форматирование не захватывается. Все это только на Лист1, в других листах и книгах все как обычно. Для нормальной встаки оставлен путь Правка-Вставить. Есть еще несколько путей обхода, но я думаю, что Вашим «особогениальным» не нужно будет их находить и поэтму не стал блокировать совсем все.

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Если честно — совершенно не понял как это сделано и как перенести в свой файл…


Мне кажется что тут проще сделать макрос, который просто будет запрещать вставлять что-либо и как-либо, с всплывающем сообщением (ЗАПРЕЩЕНО!ЕПТ!)

только я не знаю как такой макрос сделать  :)


Да вот в том то и дело что просто запретить его нежелательно — нужно сделать так чтобы по дефолту вставлялись ТОЛЬКО значения либо простой текст.


А я вставил в меню ПКМ следующий пункт и чуствую себя «нормально» :)

Sub AddShortCut()
        With ComBar.Controls.Add(Type:=msoControlButton)
            .OnAction = "MyPaste"
            .FaceId = 22
            .Caption = "Вставить значение"
        End With
End Sub

Private Sub MyPaste()
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


Цитата: _Boroda_ от 23.07.2009, 14:22
Дак я ж так и сделал
Если не получается вставить макросы в свой файл или, как я уже писал, в мой файл с макросами вставить свою табличку — присылай кусочек своего файла (предполагаю, что весит он немало).

Да я бы с радостью — но у меня 8 менеджеров и у каждого такой файл свой… не все же 8 присылать — тем более что там есть инфа которую не хотелось бы публично светить. Поэтому хочу разобраться сам.

Что такое этот макрос? Где он хранится и куда его собсно вставлять?
Наивно полагал что это какая-то особо-сложная формула в ячейке — а это оказывается что-то роде программы внутри файла… вот это и вызывает сложности — начиная от простого переноса, заканчивая тем как это привязывать к нужным листам и т.п.


Из всех предложенных вариантов, ничего не понял…
помогите, мне тоже нужна такая возможность «запрета вставки»…
не ужели нет какого нить простого макроса, с запретом кнопки вставки…???


Находясь в среде Excel нажмите «Alt+F11», откроется окно редактора VBA
Раскройте VBAProject(«Ваша Книга«) …  в модуле «ЭтаКнига» вставьте следующий код


Private Sub Workbook_Open()
    With Application
        .OnKey "^{v}", "MyPaste"
        .OnKey "+{INSERT}", "MyPaste"
        .Run ("AddMyPaste")
    End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'восстанавливаем всё на место при выходе
    With Application
        .OnKey "^{v}"
        .OnKey "+{INSERT}"
        .CommandBars("Cell").Reset  ' Восстановление системного контекстного меню ячейки
    End With
End Sub

затем, ПКМ по VBAProject вызываем меню и добавляем(insert) новый модуль
в Вновь созданный модуль вставьте следующий код


Sub AddMyPaste()
    With CommandBars("Cell").Controls.Add(Type:=msoControlButton, Before:=1)
        .OnAction = "MyPaste"
        .FaceId = 22
        .Caption = "Вставить значение"
    End With
End Sub

Private Sub MyPaste()
On Error Resume Next
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
End Sub

во вложении файл с кодом

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


Что-то у меня все равно вставляется…

я копирую данные из другого ексел файла, и вставляю в пример из вложения… и все равно вставляется, даже с заливкой и с линиями….

не понятно((


 А макросы включили?
В меню ПКМ «Вставить значение» появилось?

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


сделал все как описано…

а что за меню ПКМ?  я делал написано:

Цитироватьзатем, ПКМ по VBAProject вызываем меню и добавляем(insert) новый модуль
в Вновь созданный модуль вставьте следующий код

и туда вставлял код


ПКМ — Правая Кнопка Мышки

Если Вы запускаете файл и Разрешаете запуск макросов, то в меню ПКМ на ячейке(когда выделена одна/группа ячеейк, а не строка или столбец) должен появиться новый пункт «Вставить значение», если такового не появилось, значит макросы отключены. Возможно, Вам надо сменить уровень безопасности Excel на менее «жесткий» (Сервис/Параметры/Безопасность/Безопасность макросов) Рекомендую «Среднюю» поставить.

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


все, я понял…. макрос работает….

только вот никакого запрета  copy-paste тут нет. Ведь необходимо чтобы вообще никак нельзя было вставить скопированное…

вот в чем вопрос…)


Что Вам мешает?
Включите воображение

Private Sub MyPaste()
      msgbox("Здесь нельзя вставить скопированное :)")
End Sub

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


Если через Ctrl +V или shift +insert, то вставку блокирует… но вот если вставлять через Правка — Вставить, то все равно вставляется. Можно ли как то и это заблокировать? :)


Если для Вас так важно, что бы изменения не вносились в лист, то не проще ли воспользоваться стандартными средствами (Защитить Лист)
Во вложении файл, который кроме клавишь отключает Вставку изо всех контекстных меню.
Это максимум, что я могу для Вас сделать.  ;)

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


спасибо!! все отлично работает)) ;)


boa
у меня опять проблема…запускал вам пример дома на 2007 excel’e, все работало… а вот на работе на 2003, почему то через Правка-Вставить, все равно вставляется… хотя в меню ПКМ — Вставить, блокируется…
непонятно((


Странно, в 2007-м тоже должно вставляться из меню панели
я не знаю как отключить эту вставку

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость…  Мигель Сервантес де Сааведра


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • запрет copy-paste

We have a workbook that has a lot of tables set up where users are supposed to enter data. These tables are ready by Power Query and/or VBA macros to do things with.

The problem is despite much education and wailing and gnashing of teeth, users refuse to consistently and reliabily use Paste|Values to prevent formatting, incorrect data types, or even creating formula links to other workbooks, which invariably causes Power Query or VBA code to fail. Even using Excel’s Data Validation doesn’t work because that ignores Paste operations, so you can paste text in to a formula only cell, etc.

This workbook already has VBA, so being a macro workbook is no problem.

I want to block paste. 100% of PASTE operations, and prefer to block CUT but I’m ok if CUT isn’t blocked as no one yet has done that to cause an issue. I prefer that COPY remain intact as the results of this workbook are needed for other workbooks, emails, etc.

I’ve tried Ken Puls’ solution here but in Excel for Office 365, which is around build 1905 right now, while CTRL-V is blocked, the Paste icons in the right-click menu and ribbon menu still work. Oddly enough, the COPY and CUT options are blocked, so something in Excel must have been changed since his post.

So I am currently using Tom Urtis’ solution here which does work, but is absolutely draconian. His method is to disable the right-click menu entirely, but actually doesn’t block CTRL-V, the nor the «menu key» on many keyboards today as long as the clipboard data originated from outside Excel. Data copied from other Excel workbooks will not paste, unless someone figures out they can launch a second copy of Excel, and they will.

So, any ideas? 

Предположим, у вас есть рабочая книга с важными данными, которые нужно защитить от вырезания, копирования и вставки. Как этого добиться? В этой статье представлен метод VBA, с помощью которого вы можете одновременно отключить функции вырезания, копирования и вставки в книге Excel.

Отключить функции вырезания, копирования и вставки с кодом VBA


Отключить функции вырезания, копирования и вставки с кодом VBA

Чтобы отключить функции вырезания, копирования и вставки в книге Excel, сделайте следующее.

1. В книге вам нужно отключить функции вырезания, копирования и вставки, нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окно, пожалуйста, дважды щелкните Эта рабочая тетрадь слева Проекты под застройку панели, а затем скопируйте и вставьте приведенный ниже код VBA в ThisWorkbook (Код) окно. Смотрите скриншот:

Код VBA: отключение функций вырезания, копирования и вставки одновременно в Excel

Private Sub Workbook_Activate()
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_Deactivate()
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CellDragAndDrop = True
Application.OnKey "^c"
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.OnKey "^c", ""
Application.CellDragAndDrop = False
Application.CutCopyMode = False
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.CutCopyMode = False
End Sub

3. Затем нажмите другой + Q ключи для выхода из Microsoft Visual Basic для приложений окно.

Теперь вы не можете вырезать или копировать данные из этой книги, а данные, которые вы скопировали с других листов или книг, не могут быть вставлены в эту книгу.

Внимание: Функция перетаскивания также отключается после выполнения вышеуказанного кода VBA.


Статьи по теме:

  • Как отключить щелчок правой кнопкой мыши на вкладке листа в Excel?
  • Как отключить контекстное меню на указанном листе или всей книге в Excel?
  • Как предотвратить или отключить режим редактирования двойным щелчком по ячейке в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (50)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Excel vba если файл открыт то закрыть
  • Excel vba заполнить двумерный массив
  • Excel vba если строка пустая
  • Excel vba запись в txt
  • Excel vba если оператор if