VBA + Whatsapp Web

Asked

Viewed 11,365 times

-1

Guys, I mounted a macro in VBA that triggers automatic messages according to some parameters determined in the table. The macro basically works with pressing the keys on the keyboard, very simple.

Briefly, the macro opens the browser in the Whats Web page, copies the contact that will already be determined in the table, pastes in the search field, locates the contact, copies the message that will also be determined in a Textbox in the table and pastes the message to the recipient. It turns out that when the contact is not located, it does not identify this and the macro no longer works.

I basically need the macro to recognize when the contact is not located and jump to the next contact.

Sub Botão6_Clique()
'Declaração das variáveis
Dim contato As String
Dim retorno As String
Dim concluido As String
Dim veiculo As String
Dim cadastro As String
Dim transferencia As String
Dim substituicao As String
Dim desalienacao As String
Dim html As String

veiculo = Sheets(1).veiculo
cadastro = Sheets(1).cadastro
transferencia = Sheets(1).transferencia
substituicao = Sheets(1).substituicao
desalienacao = Sheets(1).desalienacao

'atribui a variável linha o número 2, para iniciar na segunda linha da primeira coluna
linha = 2

'Chama o navegador e abre no link setado
ActiveWorkbook.FollowHyperlink "https://web.whatsapp.com/"

'Vai percorrer toda lista de contatos, até que ela encerre
Do Until Sheets(1).Cells(linha, 2) = ""

    'Chama função de espera por 2 segundos
    Fazer (15000)
    contato = Cells(linha, 2)

    'Se não tiver nenhum contato, aparece msg box e solicita a inclusão de algum
    If contato = "" Then
        MsgBox "Preencha os contatos"
        Exit Sub
    End If
    retorno = Cells(linha, 4)
    concluido = Cells(linha, 5)

    'RETORNO VEÍCULO
    If retorno = "Veículo" And concluido <> "ok" Then

        'Chama a função de espera por 3 segundos
        Fazer (15000)

        'Aperta as teclas do teclado
        Call SendKeys("{TAB}", True)
        Call SendKeys("{BS 1000}", True)
        Call SendKeys(contato, True)
        Call SendKeys("~", True)

        'Chama a função de espera por 8 segundos e envia a mensagem
        Fazer (15000)
        Call SendKeys(veiculo, True)
        Call SendKeys("~", True)
        Call SendKeys("{TAB}", True)

    'RETORNO CADASTRO
    ElseIf retorno = "Cadastro" And concluido <> "ok" Then

        'Chama a função de espera por 3 segundos
        Fazer (15000)

        'Aperta as teclas do teclado
        Call SendKeys("{TAB}", True)
        Call SendKeys("{BS 1000}", True)
        Call SendKeys(contato, True)
        Call SendKeys("~", True)

        'Chama a função de espera por 8 segundos e envia a mensagem
        Fazer (15000)
        Call SendKeys(cadastro, True)
        Call SendKeys("~", True)
        Call SendKeys("{TAB}", True)

    'RETORNO TRANSFERÊNCIA
    ElseIf retorno = "Transferência" And concluido <> "ok" Then

        'Chama a função de espera por 3 segundos
        Fazer (15000)

        'Aperta as teclas do teclado
        Call SendKeys("{TAB}", True)
        Call SendKeys("{BS 1000}", True)
        Call SendKeys(contato, True)
        Call SendKeys("~", True)

        'Chama a função de espera por 8 segundos e envia a mensagem
        Fazer (15000)
        Call SendKeys(transferencia, True)
        Call SendKeys("~", True)
        Call SendKeys("{TAB}", True)

    'RETORNO SUBSTITUIÇÃO
    ElseIf retorno = "Substituição" And concluido <> "ok" Then

        'Chama a função de espera por 3 segundos
        Fazer (15000)

        'Aperta as teclas do teclado
        Call SendKeys("{TAB}", True)
        Call SendKeys("{BS 1000}", True)
        Call SendKeys(contato, True)
        Call SendKeys("~", True)

        'Chama a função de espera por 8 segundos e envia a mensagem
        Fazer (15000)
        Call SendKeys(substituicao, True)
        Call SendKeys("~", True)
        Call SendKeys("{TAB}", True)

    'RETORNO DESALIENAÇÃO
    ElseIf retorno = "Desalienação" And concluido <> "ok" Then

        'Chama a função de espera por 3 segundos
        Fazer (15000)

        'Aperta as teclas do teclado
        Call SendKeys("{TAB}", True)
        Call SendKeys("{BS 1000}", True)
        Call SendKeys(contato, True)
        Call SendKeys("~", True)

        'Chama a função de espera por 8 segundos e envia a mensagem
        Fazer (15000)
        Call SendKeys(desalienacao, True)
        Call SendKeys("~", True)
        Call SendKeys("{TAB}", True)
    End If
    linha = linha + 1
Loop

End Sub

Function Fazer(ByVal Acao As Double)
    Application.Wait (Now() + Acao / 24 / 60 / 60 / 1000)

End Function
  • You can try some more direct interaction with the browser, in case only via internet explorer, instantiating the browser in VBA and monitoring the DOM elements of contacts display / message not found

1 answer

0

He comes out of Sub when you don’t find the contact because you asked him to do it on the block If:

If contato = "" Then
    MsgBox "Preencha os contatos"
    Exit Sub
End If

You can replace the Exit Sub by a drop for before increment and loop for example, or define what to do when he can’t find the contact.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.