VBA Вставить содержимое буфера обмена (только значение) - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь вставить содержимое буфера обмена в ячейку "A1"

Range("A1").PasteSpecial xlPasteValues

Но я получаю сообщение об ошибке "Метод PasteSpecial класса Range не удалось"!

Ценю любую помощь!

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Проверьте этот код, пожалуйста (он работает только для типа буфера обмена текста):

Sub testClipB()
 Dim CB As Object
 Set CB = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
 CB.GetFromClipboard
 Range("A1").value = CB.GetText
End Sub

Или этот:

Sub testPasteClipB_Bis()
    Dim DataObj As MSForms.DataObject
    Set DataObj = New MSForms.DataObject
    DataObj.GetFromClipboard

    Range("A2").value = DataObj.GetText(1)
End Sub
0 голосов
/ 22 марта 2020

Вставить только значения из выбора

Ошибка

Ошибка времени выполнения '1004':

Ошибка метода PasteSpecial класса Range

Факт

xlPasteValues используется исключительно после (содержимое) ячеек было скопировано (в буфер обмена).

Проблема

Ошибка всегда возникает после того, как ячейки не были скопированы или ячейки были вырезаны.

Решение

Поэтому вы должны проверить (проверить) CutCopyMode соответственно, и ваша формула будет в порядке:

Sub PSpec()
     If Application.CutCopyMode = xlCopy Then
         Range("A1").PasteSpecial xlPasteValues
     End If
End Sub
...