Enviando e-mail específico com base nos valores da célula no Excel 2016?

2

Existe uma maneira mais eficiente de enviar lembretes por e-mail para um usuário com base em um valor de célula que muda com frequência? Aqui está o código do que estou trabalhando para que vocês possam entender o contexto da questão.

    'This is the main function

Sub notify()          
 Dim rng As Range
 For Each rng In Range("F3:F14")
    If (rng.Value = 1) Then
        Call mymacro
    End If
 Next rng

End Sub
-----------------------------------------------------------------------

  'This is the function that sends an email when called by the main function

  Private Sub mymacro()  
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "email address"
        .CC = ""
        .BCC = ""
        .Subject = "test succeeded"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Explicação:

Ambos os códigos acima estão localizados no mesmo módulo da minha planilha. O código funcionou perfeitamente bem para enviar um email (através do Outlook) para o usuário. Por exemplo, se F3 e F7 forem avaliadas como verdadeiras, dois e-mails serão enviados para o usuário.

Agora, eis o problema, como posso editar meu código, de modo que, se ocorrer a mesma situação (F3 e F7, avaliado como verdadeiro), os dois emails enviados ao usuário especificam qual célula é avaliada como verdadeira. Em outras palavras, cada e-mail enviado seria diferente ao indicar qual célula específica foi avaliada como verdadeira.

Além disso, o código poderá ser executado novamente se os dados dentro da célula ("F3: F14") forem atualizados?

Eu pessoalmente não tenho nenhum histórico de VBA, então seria legal se vocês pudessem explicar isso no período de leigos. Obrigado! Realmente aprecio isso! :)

    
por Wen Yao Wen Yao 17.01.2018 / 00:30

1 resposta

0

Considerando que isso foi perguntado há 2 anos, tenho certeza de que você resolveu o problema ou seguiu em frente. Mas isso chegou ao topo da lista não respondida, então ... aqui vai!

Para responder a primeira pergunta, existe uma maneira mais eficiente? A parte que você compartilhou parece ser executada manualmente, o que significa que o programa não será executado, a menos que você execute uma ação. Eu tentaria automatizar essa tarefa com um processo orientado a eventos. Isso pode ser feito de várias maneiras diferentes e eu preciso saber mais sobre seu fluxo de trabalho para obter eficiência significativa.

E a segunda pergunta, sobre como alterar o email. Tipos de uma questão aberta, considerando o estado atual do código. A explicação simples e curta é salvar o valor das células para uma variável ou duas e, em seguida, usar essa variável em seu email.

Por exemplo, se você tivesse uma variável com a horrível variável de nomeX e essa variável contivesse o intervalo de F3, seu e-mail poderia usar a variávelX.

Uma alteração simples para adicionar as informações:

. Subject = "The cell at " & variableX.address & " is " & variableX. value & " test succeeded"

    
por 25.08.2018 / 08:24