Я пытаюсь автоматизировать генерацию электронных таблиц во внешнем приложении, и для этого используются события мыши и клавиши sendkeys. По большей части, он полностью функционален, за исключением того, что иногда, когда макрос вызывает щелчок левой кнопкой мыши, он фактически не щелкает.
До сих пор я пытался ввести более длительные сны между щелчками и в самом событии мыши, но этого, похоже, недостаточно.
Подставка левого щелчка:
'Mouse left click
Sub LeftClick()
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
После каждого левого щелчка у меня также есть вызов Sleep(1000)
. Хотя это работает более 90% времени, когда он вызывается, мне нужно, чтобы оно работало 100% времени.
РЕДАКТИРОВАТЬ: добавление еще кода для каждого запроса, чтобы, надеюсь, попытаться устранить любую путаницу.
События мыши - это просто системная библиотека, на которую я ссылаюсь:
'Declare mouse events
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN As Long = &H2
Public Const MOUSEEVENTF_LEFTUP As Long = &H4
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10