Как отладить проблемы с помощью SendKeys в VBA? - PullRequest
0 голосов
/ 20 февраля 2019

Итак, я пытаюсь настроить дуплексную печать в Excel, а другой опубликованный код просто не работает для меня.Я попытался отладить его, ничего не нашел и решил попробовать использовать SendKeys, чтобы установить параметр двусторонней печати.Код выглядит следующим образом:

Sub SendKeysDuplex()
Dim I As Long
Application.Dialogs(xlDialogPrinterSetup).Show

Application.SendKeys "^p", True
Sleep 5000

For I = 1 To 3
    Application.SendKeys "{TAB}", True
    Sleep 500
Next I
    Application.SendKeys "{ENTER}", True
    Sleep 500
For I = 1 To 4
    Application.SendKeys "{TAB}", True
    Sleep 500
Next I

        'First sets the option to no
    Application.SendKeys "n", True
        'To make sure we get the right yes
    Application.SendKeys "y", True
    'And confirm the setting
    Application.SendKeys ("{ENTER}")
    'Sheet1.PrintOut

End Sub

Он прекрасно открывает меню печати - но тогда вкладки и вводы, похоже, ничего не делают.Однако, если я пытаюсь отладить код, проходя через него, он отправляет ключи в редактор VBA, а не в Excel.

Как я могу отладить проблемы в SendKeys?Есть ли что-то еще, что мне нужно знать об открытии меню с помощью Sendkeys?

Мне удалось заставить отладку работать, создав группу макросов с отдельными SendKeys, назначив эти макросы клавишам, а затем нажав клавишуключи в порядке.Похоже, что Tab не хочет функционировать в диалоговом окне печати - он ничего не делает при отправке с помощью sendkey, но работает при нажатии вручную.(???)

1 Ответ

0 голосов
/ 20 февраля 2019
  1. запускает подпрограмму только тогда, когда активно окно рабочего листа Excel , а не VBE . (фактически, перед запуском сабвуфера закройте VBE )
  2. замените все команды Sleep на DoEvents команды
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...