Pessoal, na minha empresa não podemos utilizar qualquer linguagem de programação se não o Excel/VBA (sim, é triste).
Fiz algumas pesquisas e pelo que parece, para o objetivo que estou buscando, o VBA é péssimo.
Preciso que a macro simule o mouse e o teclado, mas por algum motivo, o clique esquerdo não esta funcionando...
O mouse movimenta, as teclas ALT+TAB e CTRL+P funcionam. Mas o clique para então digitar o que consta na célula designada, não funciona.
Alguém pode me ajudar?
Segue o código:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
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
Sub Executar()
Dim i As Integer
Dim celula As Range
Dim texto As String
' Define a planilha onde as informações estão localizadas
Dim planilha As Worksheet
Set planilha = ThisWorkbook.Sheets("TemplateMacro")
' Define o número de vezes que o processo será repetido (com base na quantidade de informações na coluna A)
Dim numRepeticoes As Integer
numRepeticoes = planilha.Cells(Rows.Count, 1).End(xlUp).Row - 1
' Loop para repetir o processo
For i = 1 To numRepeticoes
' Obtém o texto da célula atual (coluna A)
Set celula = planilha.Cells(i + 1, 1)
texto = celula.Value
' Pressionar ALT + TAB
AppActivate Application.Caption
Application.SendKeys ("%{TAB}")
Application.Wait Now + TimeValue("00:00:01")
' Mover o mouse até X:474 Y:306
Application.Wait Now + TimeValue("00:00:01")
MouseMove 474, 306
' Clicar botão esquerdo
MouseClick vbLeftButton
' Inserir texto na célula A2
Application.Wait Now + TimeValue("00:00:03")
planilha.Range("A2").Value = texto
' Mover o mouse até X:473 Y:333
Application.Wait Now + TimeValue("00:00:03")
MouseMove 473, 333
' Clicar botão esquerdo
MouseClick vbLeftButton
' Inserir texto na célula A2
Application.Wait Now + TimeValue("00:00:03")
planilha.Range("A2").Value = texto
' Mover o mouse até X:315 Y:634
Application.Wait Now + TimeValue("00:00:04")
MouseMove 315, 634
' Clicar botão esquerdo
MouseClick vbLeftButton
' Mover o mouse até X:862 Y:325
Application.Wait Now + TimeValue("00:00:04")
MouseMove 862, 325
' Clicar botão esquerdo
MouseClick vbLeftButton
' Aguardar 4 segundos
Application.Wait Now + TimeValue("00:00:04")
' Pressionar as teclas CTRL + P
Application.SendKeys "^p"
' Aguardar 4 segundos
Application.Wait Now + TimeValue("00:00:04")
' Pressionar a tecla ENTER
Application.SendKeys "~"
' Aguardar 6 segundos
Application.Wait Now + TimeValue("00:00:06")
' Mover o mouse até X:844 Y:311
MouseMove 844, 311
' Clicar botão esquerdo
MouseClick vbLeftButton
' Aguardar 2 segundos
Application.Wait Now + TimeValue("00:00:02")
' Inserir texto na célula A2
planilha.Range("A2").Value = texto
' Mover o mouse até X476 Y:297
Application.Wait Now + TimeValue("00:00:02")
MouseMove 476, 297
' Clicar botão esquerdo
MouseClick vbLeftButton
' Mover o mouse até X:1062 Y:687
Application.Wait Now + TimeValue("00:00:02")
MouseMove 1062, 687
' Clicar botão esquerdo
MouseClick vbLeftButton
' Aguardar 2 segundos
Application.Wait Now + TimeValue("00:00:02")
' Mover o mouse até X:553 Y:13
MouseMove 553, 13
' Inserir texto "OK" na célula B2
planilha.Range("B2").Value = "OK"
Next i
End Sub
' Função para simular um clique do mouse
Private Sub MouseClick(ByVal Button As Integer)
Dim MousePoint As POINTAPI
GetCursorPos MousePoint
mouse_event Button, MousePoint.x, MousePoint.y, 0, 0
End Sub
' Função para mover o mouse para uma determinada posição
Private Sub MouseMove(ByVal x As Long, ByVal y As Long)
SetCursorPos x, y
End Sub