VBA + WhatsApp Web

-1

Well, I set up a macro in VBA that triggers automatic messages according to some parameters determined in the table. The macro basically works by pressing keys on the keyboard, very simple.

In short, the macro opens the browser on the Whats Web page, copies the contact that will already be determined in the table, paste in the search field, find the contact, copy the message that will also be determined in a TextBox in the table and paste the message to the recipient. It turns out that when the contact is not found, it does not identify this and the macro no longer works.

I basically need the macro to recognize when the contact is not found and skip 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
    
asked by anonymous 07.11.2017 / 19:05

1 answer

0

It exits from Sub when you do not find the contact because you asked him to do this in block If :

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

You can replace Exit Sub with a goto for before increment and loop for example, or define what to do when it does not find the contact.

    
26.09.2018 / 03:13