Note: The other languages of the website are Google-translated. Back to English

Como enviar lembrete ou notificação por e-mail se a pasta de trabalho for atualizada no Excel?

Em alguns casos, pode ser necessário acionar uma notificação por email para um destinatário específico se houver dados atualizados na pasta de trabalho que você enviou. Este artigo mostrará o método para alcançá-lo.

Enviar lembrete por e-mail ou notificação se a pasta de trabalho for atualizada com o código VBA


Enviar lembrete por e-mail ou notificação se a pasta de trabalho for atualizada com o código VBA


Faça o seguinte para enviar lembrete ou notificação por e-mail se a pasta de trabalho for atualizada.

1. Na pasta de trabalho, abra uma planilha especificada para enviar uma notificação por e-mail com base nos dados atualizados.

2. Clique com o botão direito na guia da folha e selecione Ver código no menu do botão direito. Veja a imagem:

2. No Microsoft Visual Basic para Aplicações janela, copie e cole o código a seguir na janela de código. Veja a imagem:

Código VBA: enviar lembrete ou notificação por e-mail se a pasta de trabalho for atualizada

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    Dim xYesOrNo As Integer
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xYesOrNo = MsgBox("Want to attach updated workbook in email?", vbInformation + vbYesNo, "KuTools For Excel")
    If xYesOrNo = 6 Then ActiveWorkbook.Save
    If xYesOrNo = 6 Then xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "Email Address"
        .cc = ""
        .Subject = "email notification test"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        If xYesOrNo = 6 Then .Attachments.Add xName
        .Display
    End With
    xMailItem = Nothing
    xOutApp = Nothing
End Sub

Nota: Substitua o endereço de e-mail pelo endereço de e-mail do destinatário na linha .To = "Endereço de e-mail". E altere os campos Cc, Assunto e corpo no código VBA conforme necessário.

3. aperte o outro + Q chaves para fechar o Microsoft Visual Basic para Aplicações janela.

4. Depois de editar uma célula na planilha, um Kutools for Excel a caixa de diálogo aparecerá conforme a imagem mostrada abaixo. Se você deseja anexar a pasta de trabalho atualizada ao e-mail, clique no Sim botão. Caso contrário, clique no Não botão.

5. Em seguida, um e-mail é criado automaticamente com ou sem a pasta de trabalho atualizada anexada. E todos os campos especificados também são listados no e-mail. Por favor clique no ENVIAR botão para enviá-lo.

Nota: O código VBA só funciona quando você usa o Outlook como seu programa de e-mail.


Artigos relacionados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (13)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Se alguém encontrou esta página querendo saber como enviar um e-mail do Excel usando o CDO, montei um Google Doc -- Como enviar e-mail do Excel usando o Gmail (https://docs.google.com/document/d/1u5VLzCApU3k4-9Vp9LEfqyFZ6u9tAY0avNPYN_1FsN4/edit?usp=sharing) com código no GitHub gist (https://gist.github.com/bergerjac/7355d4e528fa6c64a02dc494f3d241a1)
Este comentário foi feito pelo moderador no site
Posso CC mais de uma pessoa nisso? Obrigado
Este comentário foi feito pelo moderador no site
Oi Leah
Insira os endereços de e-mail diretamente na linha .cc="" e separe-os com ponto e vírgula, como .cc = "AAA@gmail.com;BBB@gmail.com"
Este comentário foi feito pelo moderador no site
Copiei e colei o código exatamente como está nesta página, mas quando faço uma alteração no meu documento recebo a mensagem "Erro de sintaxe" e esta linha destaca: Dim xOutApp As Object. Qualquer ajuda seria apreciada.
Este comentário foi feito pelo moderador no site
Oi Judy,
Você forneceria a versão do Excel que está usando? Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá, o código funciona muito bem. No entanto, quando uma célula muda para um ponto abaixo do limite por meio de uma operação de macro que copia e cola o valor mais baixo na célula designada, o código parece não ser acionado.

Além disso, gostaria de aplicar este código a várias células. Posso copiar e colar o código várias vezes e alterar cada versão copiada para atender às necessidades de cada célula? Existe uma maneira melhor de fazer isso. Eu não consigo descobrir isso. Obrigada!
Este comentário foi feito pelo moderador no site
Desculpe, postei no artigo errado. vou postar no artigo correto
Este comentário foi feito pelo moderador no site
Quando tentei alterar algo em uma célula, uma mensagem solicitava a configuração de e-mail do Outlook e continua pedindo minha senha.
Este comentário foi feito pelo moderador no site
Olá MJ,
Qual versão do Excel você está usando? Você pode fornecer uma captura de tela do prompt?
Este comentário foi feito pelo moderador no site
Para mim, o código é executado de novo e de novo, é como um loop sem fim. Eu fecho o e-mail ele pede novamente para enviá-lo...
Este comentário foi feito pelo moderador no site
por favor, estou um pouco confuso, mas onde no código ele detecta a planilha sendo modificada/atualizada?
estou tentando escrever um código em que a tabela em uma planilha específica é enviada quando a tabela é modificada (ou mais especificamente quando as linhas são adicionadas)
obrigado!
Este comentário foi feito pelo moderador no site
Oi,
O código na postagem detecta todas as células em toda a planilha com base na primeira linha de "Private Sub Worksheet_Change(ByVal Target As Range)".
Se você quiser enviar um email com uma tabela específica quando ela for modificada, tente o seguinte VBA.
Nota: altere "Table1" para o nome da sua própria tabela.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2022/5/27
    Dim xYesOrNo As Integer
    Dim xTableName As String
    Dim xTableRg As Range
    Dim I, J As Long
    Dim xEmailBody As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    
    xTableName = "Table1" 'The name of the table you will send when it is modified
    Set xTableRg = ActiveSheet.ListObjects(xTableName).Range
    If Intersect(Target, xTableRg) Is Nothing Then Exit Sub

    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    For I = 1 To xTableRg.Rows.Count
        For J = 1 To xTableRg.Columns.Count
            xEmailBody = xEmailBody & "  " & xTableRg.Cells(I, J).Value
        Next
        xEmailBody = xEmailBody & vbNewLine
    Next
    xEmailBody = "Hi" & vbLf & vbLf & " body of message you want to add" & vbLf & vbLf & xEmailBody & vbNewLine
    With xMailOut
        .Subject = "Test"
        .To = "XXX@163.com"
        .Body = xEmailBody
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
End Sub
Este comentário foi feito pelo moderador no site
Hola cristal, não há dados Private Sub Worksheet_Change, você deve saber o nome do meu excel ou não?
Los rangos de (I,J) cambiarlos por los valores de celdas que yo dese estar mirando si cambian?
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos