1

В последнее время кажется, что Excel сделал поведение по умолчанию для копирования как изображения для горячей клавиши Ctrl+C (фактически, кажется, что одновременно помещает форматированный текст, данные ячейки таблицы и изображение для просмотра в буфер обмена одновременно).

Это плохо, если у вас есть рабочий процесс, в котором вы копируете данные из Excel и вставляете их в другое приложение MS Office или в веб-форму в Google Chrome, где по умолчанию Ctrl+V использует вставку самого богатого содержимого из всех доступных. Например, в таких продуктах Atlassian, как Jira, вставка вызывает вставку "скриншотов" (вложенных изображений).

Итак, вопрос:

Как я могу сказать Excel не помещать данные изображения в буфер обмена, когда я нажимаю Ctrl+C?

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

Ctrl+Shift+V в Chrome.

Ctrl+V, Ctrl, T в Outlook.

так далее...

1 ответ1

0

Вы можете попробовать этот код VBA, чтобы проверить, есть ли в буфере обмена данные изображения или нет, и если он есть, то этот код будет препятствовать его вставке.

Помните, что действие Ctrl+C может быть остановлено только путем его отключения. Поэтому я считаю, что это лучшее из возможных решений.

Обратите внимание, что перед выполнением этого кода VBA в редакторе VB нажмите « Инструмент», затем « Ссылки» и выберите « Библиотеку объектов Microsoft Form 2.0».

Лучше использовать код с событием Open Workbook.

Private Sub Workbook_open()

   Dim BufObj As MSForms.DataObject
   Set BufObj = New MSForms.DataObject

   BufObj.GetFromClipboard

   On Error Resume Next
   ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False

    If Err Then
       MsgBox "Nothing in ClipBoard!": Err.Clear

    Else

      MsgBox "Picture in ClipBoard": Err.Clear
      Application.CutCopyMode = False
      Application.DisplayAlerts = False

   End If

End Sub

NB. Вам также необходимо создать одно событие нажатия кнопки, чтобы активировать режим обрезки. Этот простой код сделает это.

Application.CutCopyMode = True

Application.DisplayAlerts = Ture

Этот код был проверен мной, прежде чем я разместил его здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .