Контроль параметра вставки
Leprotto
Дата: Вторник, 31.01.2017, 11:56 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация:
2
±
Замечаний:
0% ±
Excel 2016
Добрый день! Подскажите, пожалуйста, можно макросом контролировать действие пользователя по вставке данных из буфера обмена? А именно контролировать параметр вставки - если юзер нажал Ctrl+V или вставил любым доступным способом, то вставка должна осуществиться с параметром "только значения".
Добрый день! Подскажите, пожалуйста, можно макросом контролировать действие пользователя по вставке данных из буфера обмена? А именно контролировать параметр вставки - если юзер нажал Ctrl+V или вставил любым доступным способом, то вставка должна осуществиться с параметром "только значения". Leprotto
Ответить
Сообщение Добрый день! Подскажите, пожалуйста, можно макросом контролировать действие пользователя по вставке данных из буфера обмена? А именно контролировать параметр вставки - если юзер нажал Ctrl+V или вставил любым доступным способом, то вставка должна осуществиться с параметром "только значения". Автор - Leprotto Дата добавления - 31.01.2017 в 11:56
Alex_ST
Дата: Вторник, 31.01.2017, 12:55 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
Ну хоткей-то переназначить не трудно. В модуле ЭтаКнига записываете обработчик события:
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^V" , "SPPASTE_VAL"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean )
Application.OnKey "^V"
End Sub
а в стандартном модуле (но в принципе можно там же) процедуру:
Private Sub SPPASTE_VAL() ' "Специальная вставка: ВСТАВИТЬ ТОЛЬКО ТЕКСТ"
' Сочетание клавиш ^V для вызова этой процедуры назначается при событии Workbook_Open
On Error Resume Next
Selection.PasteSpecial Paste:=xlValues
If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues
If Err Then Err.Clear: ActiveSheet.PasteSpecial Format :="Текст" , Link:=False , DisplayAsIcon:=False
If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description
End Sub
Ну а по поводу это уже посложнее будет, т.к. способов может быть несколько, а само событие "вставка" программно не обрабатывается.
Ну хоткей-то переназначить не трудно. В модуле ЭтаКнига записываете обработчик события:
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^V" , "SPPASTE_VAL"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean )
Application.OnKey "^V"
End Sub
а в стандартном модуле (но в принципе можно там же) процедуру:
Private Sub SPPASTE_VAL() ' "Специальная вставка: ВСТАВИТЬ ТОЛЬКО ТЕКСТ"
' Сочетание клавиш ^V для вызова этой процедуры назначается при событии Workbook_Open
On Error Resume Next
Selection.PasteSpecial Paste:=xlValues
If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues
If Err Then Err.Clear: ActiveSheet.PasteSpecial Format :="Текст" , Link:=False , DisplayAsIcon:=False
If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description
End Sub
Ну а по поводу это уже посложнее будет, т.к. способов может быть несколько, а само событие "вставка" программно не обрабатывается. Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 31.01.2017, 13:00
Ответить
Сообщение Ну хоткей-то переназначить не трудно. В модуле ЭтаКнига записываете обработчик события:[vba]
Private Sub Workbook_Open() On Error Resume Next Application.OnKey "^V", "SPPASTE_VAL"End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean ) Application.OnKey "^V"End Sub
[/vba]а в стандартном модуле (но в принципе можно там же) процедуру:[vba]
Private Sub SPPASTE_VAL() ' "Специальная вставка: ВСТАВИТЬ ТОЛЬКО ТЕКСТ"' Сочетание клавиш ^V для вызова этой процедуры назначается при событии Workbook_OpenOn Error Resume NextSelection.PasteSpecial Paste :=xlValuesIf Err Then Err.Clear : ActiveSheet.PasteSpecial Paste :=xlValuesIf Err Then Err.Clear : ActiveSheet.PasteSpecial Format :="Текст", Link :=False, DisplayAsIcon :=FalseIf Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.DescriptionEnd Sub
[/vba]Ну а по поводу это уже посложнее будет, т.к. способов может быть несколько, а само событие "вставка" программно не обрабатывается. Автор - Alex_ST Дата добавления - 31.01.2017 в 12:55
Leprotto
Дата: Вторник, 31.01.2017, 13:14 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация:
2
±
Замечаний:
0% ±
Excel 2016
Alex_ST ,Цитата
а само событие "вставка" программно не обрабатывается
очень печально , т.к. Ctrl+V пользуются далеко не все мои юзеры
Alex_ST ,Цитата
а само событие "вставка" программно не обрабатывается
очень печально , т.к. Ctrl+V пользуются далеко не все мои юзеры Leprotto
Сообщение отредактировал Leprotto - Вторник, 31.01.2017, 13:15
Ответить
Сообщение Alex_ST ,Цитата
а само событие "вставка" программно не обрабатывается
очень печально , т.к. Ctrl+V пользуются далеко не все мои юзеры Автор - Leprotto Дата добавления - 31.01.2017 в 13:14
buchlotnik
Дата: Среда, 01.02.2017, 16:19 |
Сообщение № 4
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
Нашёл прикольную статью с подробным разбором перехвата (хоткеи + лента)
Нашёл прикольную статью с подробным разбором перехвата (хоткеи + лента) buchlotnik
Ответить
Сообщение Нашёл прикольную статью с подробным разбором перехвата (хоткеи + лента) Автор - buchlotnik Дата добавления - 01.02.2017 в 16:19
Leprotto
Дата: Среда, 01.02.2017, 16:20 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация:
2
±
Замечаний:
0% ±
Excel 2016
buchlotnik , СПАСИБО БОЛЬШОЕ
Сообщение отредактировал Leprotto - Среда, 01.02.2017, 16:36
Ответить
Сообщение buchlotnik , СПАСИБО БОЛЬШОЕАвтор - Leprotto Дата добавления - 01.02.2017 в 16:20
Alex_ST
Дата: Среда, 01.02.2017, 16:35 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
Ну да, конечно, основные способы вставки перехватываются точно так же:
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^V" , "SPPASTE_VAL"
Application.OnKey "^{Insert}" , "SPPASTE_VAL"
Application.OnKey "+{Insert}" , "SPPASTE_VAL"
Application.OnKey "~" , "SPPASTE_VAL"
Application.OnKey "{Enter}" , "SPPASTE_VAL"
End Sub
После этого останется, кажется, придумать как перехватить копирование драг-энд-дропом с зажатым Ctrl?
Ну да, конечно, основные способы вставки перехватываются точно так же:
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^V" , "SPPASTE_VAL"
Application.OnKey "^{Insert}" , "SPPASTE_VAL"
Application.OnKey "+{Insert}" , "SPPASTE_VAL"
Application.OnKey "~" , "SPPASTE_VAL"
Application.OnKey "{Enter}" , "SPPASTE_VAL"
End Sub
После этого останется, кажется, придумать как перехватить копирование драг-энд-дропом с зажатым Ctrl? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Ну да, конечно, основные способы вставки перехватываются точно так же:[vba]
Private Sub Workbook_Open() On Error Resume Next Application.OnKey "^V", "SPPASTE_VAL" Application.OnKey "^{Insert}", "SPPASTE_VAL" Application.OnKey "+{Insert}", "SPPASTE_VAL" Application.OnKey "~", "SPPASTE_VAL" Application.OnKey "{Enter}", "SPPASTE_VAL"End Sub
[/vba]После этого останется, кажется, придумать как перехватить копирование драг-энд-дропом с зажатым Ctrl? Автор - Alex_ST Дата добавления - 01.02.2017 в 16:35
Leprotto
Дата: Среда, 01.02.2017, 16:39 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация:
2
±
Замечаний:
0% ±
Excel 2016
Alex_ST , Круто, спасибо!Цитата
драг-энд-дропом с зажатым Ctrl
в моем случае самый не популярный способ, думаю пока переживу ))
Alex_ST , Круто, спасибо!Цитата
драг-энд-дропом с зажатым Ctrl
в моем случае самый не популярный способ, думаю пока переживу ))Leprotto
Ответить
Сообщение Alex_ST , Круто, спасибо!Цитата
драг-энд-дропом с зажатым Ctrl
в моем случае самый не популярный способ, думаю пока переживу ))Автор - Leprotto Дата добавления - 01.02.2017 в 16:39