Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2014, 11:03   #1
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
Сообщение Запрет на вставку, на специальную вставку

Здравствуйте! Я не очень разбираюсь в макросах. Но чуть понятие есть. Можете предложить такой макрос, который не дает вставить горячими клавишами, специальной вставкой, короче чтобы нельзя было вообще никак вставить скопированное. А только вручную писать.

Последний раз редактировалось Аслан Абдрахманов; 10.02.2014 в 11:30.
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 10.02.2014, 12:12   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Смотрите
Цитата:
Для того, чтобы в нужной рабочей книге "заблокировать" использование команд Вырезать, Копировать, Вставить, Специальная вставка и Формат по образцу, а также горячих клавиш CTRL+X, CTRL+C, CTRL+V скопируйте нижеприведённый код в модуль ThisWorkbook(ЭтаКнига) нужной рабочей книги.
Как в рабочей книге заблокировать стандартные кнопки, команды и горячие клавиши, которые отвечают за копирование
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 10.02.2014, 12:19   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Когда-то делал нечто подобное с перехватом ID-команд. Посмотрите пример во вложении.
Откройте файл и запустите макрос "DisAbleAllCLear". После этого ряд действий для пользователя будет заблокирован. Для того, чтобы вернуть начальное состояние, выполните макрос "EnableAllClear".
Если нужно, то выполнение этих макросов привяжите к событиям открытия (активации) и закрытия (деактивации) книги.
В коде макроса подробные комментарии. То, что Вам не требуется - уберите.
Вложения
Тип файла: rar Пример.rar (8.9 Кб, 41 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.02.2014, 15:39   #4
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

Не получилось! (
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 10.02.2014, 15:40   #5
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

SAS888.
А что удалить, чтобы можно было писать вручную, а запрет на все вставки оставить?
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 10.02.2014, 16:32   #6
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

SAS888.
Что-то получилось, но остались три варианта вставки: сохранить исходное форматирование, использовать конечное форматирование и сохранить только текст. Первые два варианта обычно показывает, когда копируешь с Word, а третий, когда копируешь с Exel выделив текст. Как заблокировать и эти?
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 11.02.2014, 06:52   #7
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Не идеально, очистка буфера привязана к изменению ячейки или листа (если скопировать в другой программе текст, переключится в Excel, то не меняя ячейки можно будет вставить).
В модуль книги
Код:
Private Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If TypeOf Sh Is Worksheet Then
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If TypeOf Sh Is Worksheet Then
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End If
End Sub
AndVGri вне форума Ответить с цитированием
Старый 11.02.2014, 09:08   #8
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

AndVGri.
Вроде ничего не изменилось. (
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 11.02.2014, 09:14   #9
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

AndVGri.
Если оставаться в одной ячейке, то можно вставить. Если выбрать другую, то нет. Типа сброс делает. Но пойдет. Спасибо друзья. )
Аслан Абдрахманов вне форума Ответить с цитированием
Старый 11.02.2014, 09:15   #10
Аслан Абдрахманов
Новичок
Джуниор
 
Регистрация: 10.02.2014
Сообщений: 23
По умолчанию

Но если сможете и это устранить, то буду благодарен. ) Если самим интересно. )
Аслан Абдрахманов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос на вставку строк dirih Microsoft Office Excel 7 28.06.2013 16:19
как создать "специальную вставку" из MS Excel в редактор формул Microsoft Equation 3.0 MS Word Samik Microsoft Office Word 2 21.06.2013 15:24
макрос на вставку строк hakervanya Microsoft Office Excel 11 25.09.2012 19:30
И опять про вставку картинок Even Microsoft Office Excel 8 27.10.2010 11:47
[С++]Программа на вставку для асемблера sasha3050 Помощь студентам 0 29.09.2009 18:15