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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 15:45   #11
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
модеренизировал идею maksim_serg
Код:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
<spoiler></spoiler>
End Sub
Function ClipboardText()
   On Error GoTo ClipboardText_Error
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        ClipboardText = .GetText
    End With

   On Error GoTo 0
   Exit Function
ClipboardText_Error:
    ClipboardText = ""
End Function

Sub SetClipboardText(ByVal txt$)
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText txt$
        .PutInClipboard
    End With
End Sub
PS: в 2007 работает,2010 не желает.Это всего лишь идея
Хитро, но легко обходится использованием меню вставка в панели инструментов.
m9yt вне форума Ответить с цитированием
Старый 19.11.2013, 18:07   #12
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

И этот вопрос можно решить.
Надо покопаться в Ribbon,узнать вызываемую процедуру.написать свою обработку.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 21.11.2013, 15:16   #13
Neyandex
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
По умолчанию

Проблему вставки из посторонних источников решает вот такой вариант (код со всех понемногу):

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.CutCopyMode Then
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
    End If
End Sub

Private Sub Worksheet_Activate()
    If Application.CutCopyMode Then
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
    End If
End Sub

Function ClipboardText()
   On Error GoTo ClipboardText_Error
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        ClipboardText = .GetText
    End With

   On Error GoTo 0
   Exit Function
ClipboardText_Error:
    ClipboardText = ""
End Function

Sub SetClipboardText(ByVal txt$)
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText txt$
        .PutInClipboard
    End With
End Sub

Последний раз редактировалось Neyandex; 21.11.2013 в 15:42.
Neyandex вне форума Ответить с цитированием
Старый 22.11.2013, 11:19   #14
Neyandex
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
По умолчанию

А вот сразу для всей рабочей книги:
Код:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    If Application.CutCopyMode Then
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
    End If
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
    If Application.CutCopyMode Then
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
    End If
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Application.CutCopyMode Then
       Dim s As String
       s = ClipboardText()
       Call SetClipboardText(s)
    End If
End Sub

Function ClipboardText()
   On Error GoTo ClipboardText_Error
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        ClipboardText = .GetText
    End With

   On Error GoTo 0
   Exit Function
ClipboardText_Error:
    ClipboardText = ""
End Function

Sub SetClipboardText(ByVal txt$)
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText txt$
        .PutInClipboard
    End With
End Sub
Neyandex вне форума Ответить с цитированием
Старый 22.11.2013, 12:35   #15
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Neyandex Посмотреть сообщение
А вот сразу для всей рабочей книги:
Спасибо за код. Но он будет работать только при переключении из одной книги в другую. При копировании же не из другой книги событие Workbook_WindowActivate не возникает, т.к. окно с этой книгой итак активно.
m9yt вне форума Ответить с цитированием
Старый 22.11.2013, 12:50   #16
Neyandex
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от m9yt Посмотреть сообщение
Спасибо за код. Но он будет работать только при переключении из одной книги в другую. При копировании же не из другой книги событие Workbook_WindowActivate не возникает, т.к. окно с этой книгой итак активно.
На этот случай предусмотрена Workbook_SheetActivate
Neyandex вне форума Ответить с цитированием
Старый 22.11.2013, 13:29   #17
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Neyandex Посмотреть сообщение
На этот случай предусмотрена Workbook_SheetActivate
Это событие возникает только при переключении листов. Если я сделаю активным окно Word, скопирую данные, переключусь назад на Excel, то Workbook_SheetActivate не возникнет.
m9yt вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопки социальных закладок + коды для вставки. WordPress плагин. Alexei91 WordPress и другие CMS 1 23.05.2012 16:16
Как скрыть кнопки при запуске на печать? RedRec Microsoft Office Excel 1 09.08.2011 10:54
вставки из ассемблера макс07 Общие вопросы C/C++ 7 13.05.2008 19:19
UCOZ: Кнопки кнопки на изображении ReDuX HTML и CSS 19 25.04.2008 02:39
триггерные кнопки и кнопки переключатели в DELPHI MARGO Помощь студентам 3 12.11.2007 17:35