VBA - CopyPasteCode с ключами отправки

Я использую IDE в книге Excel и пытаюсь выполнить приведенный ниже код.

Sub cpypaste()    
    Range("E7").Select    
    SendKeys ("^c"), True    
    Application.Wait (Now + TimeValue("00:00:01"))    
    Range("G7").Select        
    SendKeys ("^v"), True    
End Sub

Не то чтобы я не знаю альтернативных способов сделать это, но мне просто любопытно, почему это не работает. Я также пробовал запускать этот код с помощью сочетания клавиш и cmdbutton. Любая помощь будет оценена.


person Nitin Srivastava    schedule 21.10.2015    source источник
comment
Код у меня работает, ....   -  person Davesexcel    schedule 21.10.2015
comment
Любые настройки, которые я могу изменить в своем приложении Excel, чтобы оно работало. Какую версию Excel вы используете?   -  person Nitin Srivastava    schedule 21.10.2015
comment
xl'10 ... Я просто скопировал ваш код, вставил в модуль и нажал запустить.   -  person Davesexcel    schedule 21.10.2015
comment
Его нет на xl2007 .. :(   -  person Nitin Srivastava    schedule 21.10.2015
comment
Как это не работает? Есть ошибки?   -  person JNevill    schedule 21.10.2015
comment
Он не собирает никаких данных в буфере обмена, а ячейка назначения (ячейка G7) имеет анимацию марширующих муравьев, как будто я пытаюсь скопировать с E7, а не с G7.   -  person Nitin Srivastava    schedule 21.10.2015
comment
Вы не пытаетесь копировать с E7? Вы все равно получите марширующих муравьев, потому что CutCopyMode не имеет значения false. Что у вас в E7?   -  person Davesexcel    schedule 21.10.2015
comment
Я редактирую свой комментарий - он не собирает никаких данных в буфере обмена, а ячейка назначения (ячейка G7) имеет анимацию марширующих муравьев, как будто я пытаюсь скопировать из G7, а не из E7   -  person Nitin Srivastava    schedule 22.10.2015


Ответы (1)


Использование sendKeys в лучшем случае фекально. Я предполагаю, что вы запускаете код из окна кода, и из-за этого команды пытаются ссылаться на это окно. Для приема команд необходимо активировать Excel.

Sub cpypaste()
AppActivate Application.Caption 'Activates the window.
Range("E7").Select

SendKeys String:="^c", Wait:=True

Application.Wait (Now + TimeValue("00:00:01"))' this line I belive is not needed, with the wait as true.
Range("G7").Select
SendKeys String:="^v", Wait:=True

End Sub
person Scott Craner    schedule 21.10.2015