#excel #vba #sendkeys
#excel #vba #sendkeys
Вопрос:
Я пытаюсь получить макрос по расписанию через приложение.OnTime, как показано ниже (находится в этом справочнике):
Private Sub Workbook_Open()
Application.OnTime TimeValue("15:50:02"), "CopyScreen"
End Sub
Тогда как подраздел «CopyScreen» выглядит следующим образом (расположен в обычном модуле):
Sub CopyScreen()
Application.SendKeys "({1068})", True
DoEvents
ActiveSheet.Paste
End Sub
Модуль CopyScreen() отлично работает при вызове его из командной строки (F5), но при вызове его через запланированный подраздел Workbook_Open() копируется черный снимок экрана. Есть какие-нибудь идеи здесь?
Ответ №1:
Я получил его для работы с этим кодом:
Sub CopyScreen()
Dim sht As Worksheet
Set sht = ActiveSheet
Application.SendKeys "({1068})", True
DoEvents
With sht
.Activate
.Paste
End With 'sht
Очевидно, Excel забывает ActiveSheet, когда переходит в спящий режим в ожидании установленного времени. Поди разберись!
ХТХ
Конечная подлодка
Комментарии:
1. Хм, для меня по-прежнему никаких изменений. Есть ли какой-либо другой способ сделать снимок экрана, кроме SendKeys (который и так может быть неточным)?