Excel vba вставить специальный метод не удается всякий раз, когда я пытаюсь вставить - PullRequest
0 голосов
/ 09 ноября 2018

Привет всем, я довольно новичок в vba. Я пытаюсь перехватить все события ctrl + v на своем листе и вставить все, что находится в буфере обмена, в текущую выбранную ячейку. Большую часть времени я хочу скопировать текст из firefox или из блокнота. Имя или номер телефона клиента E.I, который является n на нашем веб-сайте, однако код работает только тогда, когда я пытаюсь вставить его внутрь самой ячейки (в режиме редактирования ячейки)

    Private Sub CopyPaste()

'PasteSpecial Values Only
  ActiveCell.PasteSpecial Paste:=xlPasteValues, skipblanks:=True

это возвращает ошибку времени выполнения. 1004 pastespecial метод класса range не удался Я также пытался это, но он также возвращает ошибку

activecell.PasteSpecial Format:="Text", skipblanks:=True, link:=False, DisplayAsIcon:=False

Как примечание, основная причина вставки только текста и только значений заключается в том, что у моего Excel очень специфический макет ячейки с цветами и другим материалом, а обычная вставка все испортила.

Я был бы рад, если бы кто-нибудь мог мне помочь

1 Ответ

0 голосов
/ 10 ноября 2018

Range.PasteSpecial метод вставляет Range, который был скопирован в указанный Range. Так что это будет работать только для диапазонов:

ActiveCell.PasteSpecial Paste:=xlPasteValues, skipblanks:=True

Буфер обмена должен быть доступен напрямую. Как использовать буфер обмена, например здесь .

Option Explicit

Sub Init()
    Application.OnKey "^{v}", "CopyPaste"
End Sub

Public Sub CopyPaste()       
    ' MSForms.DataObject can be used when MSForms lib. is referenced
    Dim clipboard As Variant 

    Dim strContents As String

    ' http://excelmatters.com/2013/10/04/late-bound-msforms-dataobject/
    ' When no MSForms is referenced yet.
    Set clipboard = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 
    clipboard.GetFromClipboard
    strContents = clipboard.GetText
    ' Parse or format strContent if needed
    ActiveCell.Value = strContents
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...