Jump to content

Quem ajudar é humilde d+ Código 95% pronto, só preciso de ajuda com um erro que não acho solução


owesleycosta

Postagens Recomendadas

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

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...