Página 1 de 1

Macro simular clique do mouse no excel

Enviado: 29 Jul 2019 às 20:53
por tnndark
Boa noite!

Tenho uma planilha gigantesca e pra poupar trabalho (cerca de 10k de cliques), queria configurar uma macro pra simular o clique do mouse.

Fazendo uma procura rápida no google, achei isso:


Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private 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)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP As Long = &H10

Private Sub DoubleClick()
'Double click as a quick series of two clicks

SetCursorPos 300, 180 'x and y position
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Application.SendKeys "{ENTER}"
Sleep 100 'Wait 0.1 seconds

Loop

End Sub



-> Problemas: Erro de compilação: 'Sub' ou 'Function' não definida (pro "SetCursorPos")

Alguém poderia me ajudar?


OBS: meus conhecimentos de programação são quase negativos, então peço desculpas desde já caso tenha cometido alguma atrocidade ali em cima.

Macro simular clique do mouse no excel

Enviado: 30 Jul 2019 às 03:20
por eduardogrigull
O que exatamente o clique fará? Normalmente tem outros métodos mais simples

Macro simular clique do mouse no excel

Enviado: 30 Jul 2019 às 05:00
por neohazuki
Ola, @tnndark.
Aparentemente a informação que você pesquisou encontra-se faltando ou incompleta para Office Excel, o código abaixo esta funcionando, a seguir tem algumas observações para você analisar junto comigo:
Código: Selecionar todos
Private Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe 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 Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP As Long = &H10


Sub DoubleClick()

Do

'Double click as a quick series of two clicks

SetCursorPos 300, 180 'x and y position
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Application.SendKeys "{ENTER}"
Sleep (100) 'Wait 0.1 seconds

Loop

End Sub
:arrow: No Declare para sistemas 64 bits eh necessário colocar PtrSafe, caso seu Excel não seja 64 bits apenas ignore esse adicional, REMOVENDO DA VBA, conforme estava no exemplo inicial.

:?: Se você da Sleep precisa abrir a lib que contenha essa função. Por isso declarei ela.
:?: Se você termina um loop, e' claro que precisa iniciar um se inicia com a informação DO (se tiver um tempo determinado para fazer isso ou uma quantidade de tempo ai e outra historia e isso precisa ser declarado.)

:!: Como o loop e infinito ao executa-lo lembre-se que isso pode ser chato parar fora do depurador!

No mais,
Abraços!