Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос на запрет вставки через ctrl+v - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Макрос на запрет вставки через ctrl+v (Формулы/Formulas)
Макрос на запрет вставки через 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
 
Ответить
СообщениеВсем доброго времени суток! Помогите пожалуйста! Есть макрос на блокировку вставки через 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 в 08:58
_Boroda_ Дата: Вторник, 04.09.2018, 09:01 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

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


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

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

Автор - _Boroda_
Дата добавления - 04.09.2018 в 09:01
Pelena Дата: Вторник, 04.09.2018, 09:03 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19160
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
[offtop]
Цитата Николай_89, 04.09.2018 в 08:58, в сообщении № 1 ()
' Author: boa

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


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[offtop]
Цитата Николай_89, 04.09.2018 в 08:58, в сообщении № 1 ()
' Author: boa

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

Автор - Pelena
Дата добавления - 04.09.2018 в 09:03
Николай_89 Дата: Вторник, 04.09.2018, 09:08 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:08
Николай_89 Дата: Вторник, 04.09.2018, 09:11 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:11
Николай_89 Дата: Вторник, 04.09.2018, 09:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:11
_Boroda_ Дата: Вторник, 04.09.2018, 09:16 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 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
 
Ответить
СообщениеЗамените 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_
Дата добавления - 04.09.2018 в 09:16
Николай_89 Дата: Вторник, 04.09.2018, 09:28 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Не помогло
 
Ответить
СообщениеНе помогло

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:28
Николай_89 Дата: Вторник, 04.09.2018, 09:29 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вот он в экселе
К сообщению приложен файл: 4027060.xls (31.0 Kb)
 
Ответить
СообщениеВот он в экселе

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:29
Николай_89 Дата: Вторник, 04.09.2018, 09:31 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Или стоп! сейчас еще раз проверю вроде работает!
 
Ответить
СообщениеИли стоп! сейчас еще раз проверю вроде работает!

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:31
_Boroda_ Дата: Вторник, 04.09.2018, 09:34 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я там дописал выше. Чтобы "помогло", нужно закрыть тот файл и открыть его заново

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

***
Довложил файл
К сообщению приложен файл: 75592879.xlsm (13.8 Kb)


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

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

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

Автор - _Boroda_
Дата добавления - 04.09.2018 в 09:34
Николай_89 Дата: Вторник, 04.09.2018, 09:36 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:36
Николай_89 Дата: Вторник, 04.09.2018, 09:40 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 09:40
Николай_89 Дата: Вторник, 04.09.2018, 10:10 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 04.09.2018 в 10:10
Nic70y Дата: Вторник, 04.09.2018, 21:07 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 8704
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
Цитата Николай_89, 04.09.2018 в 08:58, в сообщении № 1 ()
через ctrl+v

[vba]
Код
Sub Макрос1()
' Сочетание клавиш: Ctrl+м
    Application.CutCopyMode = False
End Sub
Sub Макрос2()
' Сочетание клавиш: Ctrl+v
    Application.CutCopyMode = False
End Sub
[/vba]а так смешнее :)


ЮMoney 41001841029809
 
Ответить
Сообщение
Цитата Николай_89, 04.09.2018 в 08:58, в сообщении № 1 ()
через ctrl+v

[vba]
Код
Sub Макрос1()
' Сочетание клавиш: Ctrl+м
    Application.CutCopyMode = False
End Sub
Sub Макрос2()
' Сочетание клавиш: Ctrl+v
    Application.CutCopyMode = False
End Sub
[/vba]а так смешнее :)

Автор - Nic70y
Дата добавления - 04.09.2018 в 21:07
bigor Дата: Вторник, 04.09.2018, 22:32 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 1073
Репутация: 203 ±
Замечаний: 0% ±

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


Сообщение отредактировал bigor - Среда, 05.09.2018, 09:11
 
Ответить
Сообщениепро Ctrl+ShiftAlt+v забыли :)

Автор - bigor
Дата добавления - 04.09.2018 в 22:32
Николай_89 Дата: Среда, 05.09.2018, 08:46 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 05.09.2018 в 08:46
_Boroda_ Дата: Среда, 05.09.2018, 09:43 | Сообщение № 18
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

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


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожно. Но Николай_89, Вы бы объяснили поподробнее, зачем Вам все это нужно. И зачем Вам ограничивать вставку в ВЕСЬ файл? Наверняка есть какой-то диапазон, который Вы пытаетесь таким образом защитить. Почему вдруг возникла такая мысль?
Короче, Вы неправильно вопрос задаете - не нужно спрашивать "Как запретить вставку", это только один из методов решения, а нужно примерно вот так: "Что делать, если в файле юзвери вставкой портят ..." (предположу, формат, что проверку данных или условное форматирование)

Автор - _Boroda_
Дата добавления - 05.09.2018 в 09:43
Николай_89 Дата: Среда, 05.09.2018, 13:36 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Николай_89
Дата добавления - 05.09.2018 в 13:36
_Boroda_ Дата: Среда, 05.09.2018, 13:42 | Сообщение № 20
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот с этого и нужно было начинать
Просто в модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = 0
End Sub
[/vba]
К сообщению приложен файл: 3_78787899.xlsm (13.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот с этого и нужно было начинать
Просто в модуль листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.CutCopyMode = 0
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 05.09.2018 в 13:42
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Макрос на запрет вставки через ctrl+v (Формулы/Formulas)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!