Ir ao conteúdo

Planilha que envia email baseado em data


victorrgds

Posts recomendados

Postado

Fala galera, beleza?

Bom, procurei muito aqui já e pelo visto não tem nada relacionado.

Eu gostaria de ter uma planilha que envia um "status" por email, baseado numa data também informada na planilha...

Alguem pode me ajudar?

abs,

Postado

Boa tarde!!

Eu anida não olhei, mas tem como você tentar adaptar esse código?

Sub email()
Dim myOutlook As Object
Dim myMailItem As Object
Dim FName As String
Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItem(olMailItem)
FName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
With otlNewMail
.To = "[email protected]"
.CC = ""
.Subject = "Test"
.Body = "Test"
.Attachments.Add FName
.MailItem.DeferredDeliveryTime = Range("A1")
.Send
End With

Set otlNewMail = Nothing
Set otlApp = Nothing
Set otlAttach = Nothing
Set otlMess = Nothing
Set otlNSpace = Nothing
End Sub

  • mês depois...
Postado

Fala Zinho, desculpa o sumiço cara...

 

Então, eu consegui esse código aqui:

Private Sub Worksheet_Change(ByVal Target As Range)    Dim OutApp As Object    Dim OutMail As Object    Dim texto As String    Set OutApp = CreateObject("Outlook.Application")    Set OutMail = OutApp.CreateItem(0)    linha = ActiveCell.Row - 1    If Target.Address = "$F$" & linha Then        If Plan1.Cells(linha, 6) = "Concluído" Then            texto = "Prezado(a) " & Plan1.Cells(linha, 1) & "," & vbCrLf & vbCrLf & _                    "A Fase de " & Plan1.Cells(linha, 3) & " foi concluída " & _                    Plan1.Cells(linha, 2) & vbCrLf & _                    " Veja informações abaixo:" & vbCrLf & _                    "    Projeto: AXXPXXX" & vbCrLf & _                    "    Status: " & Plan1.Cells(linha, 6) & vbCrLf & _                    "    Próxima fase: " & Plan1.Cells(linha, 5) & vbCrLf & vbCrLf & _                    "Atenciosamente," & vbCrLf & _                    "Qualidade e Metodologia"        End If        With OutMail            .To = Plan1.Cells(linha, 1)            .CC = ""            .BCC = ""            .Subject = "Informe de Projeto"            .Body = texto            .Send  'Utilize Send para enviar o email sem abrir o Outlook        End With        On Error GoTo 0        Set OutMail = Nothing        Set OutApp = Nothing    End IfEnd Sub

Em tese ele me serve, porém não para o objetivo que eu desejo de fato, que seria o envio de email baseado em data...

 

Esse código envia o email se a coluna F estiver preenchida com "concluído", tentei adaptar pra quando a data = hoje o status mudasse pra concluído, porém a VBA não reconheceu e consequentemente o email não foi enviado...

 

Tem alguma dica cara?

 

Abração!

Postado

Manda sua planilha que confiro para você. Utilizo este script aqui em um programa para vidraçaria.

O excel/VBA trabalha com datas no padrão americano MM/DD/AAAA por isso fórmulas com data costumam dar errado, mas tem uma forma de resolver!

Postado

Fala bruno, beleza?

 

O link da planilha é esse:

 

http://www.4shared.com/file/y-NK4-QSba/Macro_para_enviar_contedo_de_C.html

 

Então cara...eu vou utilizar pra um controle meu pra mudança de fases de um projeto...

 

então eu tenho mais ou menos umas 8 colunas com datas de fases de cada projeto...nessa planilha eu tentei deixar mais ou menos parecido.

 

Nesse caso ela manda o email se mudar o status pra concluido, eu posso até incluir uma coluna a mais ao lado da data com esse "status".

 

Porém teria que achar uma maneira da VBA reconhecer essa mudança de status por fórmula...

 

complicado né? hahahaha

 

abs,

Postado

@victorrgds mande sua tabela original pois algumas configurações são fixas e pode dar trabalho para você alterar depois para sua planilha, outra coisa, vi que realmente tem algumas fases.. Você que envie um email a cada mudança de fase ou só quando tudo estiver concluído?

 

Abraço.

Postado

Fala Bruno, beleza?

 

Ao término de cada fase mesmo...quando bater a data do Planejamento por exemplo, ele manda o email...

 

Ai termina a fase de especificação, outro email...e por ai vai.

 

Estou no trabalho agora e não consigo upar a planilha, assim que chegar em casa subirei o link aqui.

 

Abs e muito obrigado pela ajuda cara!

Postado

@victorrgds

 

Não entendi exatamente o que você deseja, mas falando de forma genérica, veja se estes comentários podem indicar um caminho.

 

O código que você tem "Private Sub Worksheet_Change(ByVal Target As Range)" é disparado por qualquer alteração efetuada na planilha. Porém a atualização de resultados de fórmulas não são consideradas como alterações de planilha neste caso. Por essa razão o seu código não roda ao ser atualizado o estatus resultante de fórmula.

 

Para detectar alterações em fórmulas, estando a planilha no modo de cálculo automático, pode ser utilizado o evento "Calculate".

 

Instale o código abaixo no mesmo módulo em que está o seu código atual (mantenha o código atual) e faça os testes. Se funcionar você poderá colocar o código que envia e-mail também neste evento.

Private Sub Worksheet_Calculate()  MsgBox "olá"End Sub

 

Postado

Fala Osvaldo, beleza?

 

Então cara, eu alterei...porém fiquei com uma dúvida...eu posso apontar os mesmos atributos dentro do calculate?

 

Private Sub Worksheet_Calculate(ByVal Target As Range)

 

porque me retornou um erro dizendo: a declaração do procedimento não corresponde a descrição do evento...

 

O que fazer? rs

 

abs

Postado

Eaê, Victor.

 

Sugiro que primeiramente você faça o teste que eu descrevi no post anterior, visto que,  com base na sua resposta aí acima eu não consigo concluir se você fez o teste, e se fez, qual foi o resultado. Por isso não consigo propor algo.

 

O objetivo é verificar se o código que eu coloquei dispara após a fórmula ter seu resultado alterado. Não altere o código, instale da forma que postei.

 

Depois, se o código disparar, aí você vai fazer um copiar do seu código atual e colar no lugar da MsgBox que está no código que eu sugeri. Feito isso serão necessários alguns ajustes, por exemplo, substituir o termo "Target".

 

Mas...conforme comentou a loira que picou o japa: vamos por partes...

Postado

Fala Osvaldo, beleza?

 

Então cara, o código disparou sim e a msgbox apareceu...ai vem a dúvida...rs

 

E agora? Qual termo utilizo no lugar do Target?

 

abs e obrigado pela ajuda.

Postado

Como primeira tentativa experimente substituir por "ActiveCell":

 

substitua esta linha

If Target.Address = "$F$" & linha Then

 

por esta

If ActiveCell.Address = "$F$" & linha Then

 

 

A propósito estes comandos para atribuir valor à variável "linha" e para verificar a localização da célula ativa funcionam corretamente?

 

linha = ActiveCell.Row - 1

If Target.Address = "$F$" & linha Then

Postado

Fala Osvaldo,

 

Funcionam sim cara, porém...como a minha solução teria que verificar várias colunas, 11 pra ser mais específico, o que eu posso usar pra isso ser viável? Ou seja, quando ele encontrar o Concluido dentre as colunas ele ja dispara o email...

 

Abs,

Postado

Victor

 

1. qual foi o resultado da substituição do Target pelo ActiveCell ?

 

2. explique o que o código precisa verificar antes de disparar o envio de cada e-mail e também informe qual a finalidade destes comandos

linha = ActiveCell.Row - 1

If Target.Address = "$F$" & linha Then

 

3. sim, é possível pesquisar em quantas colunas desejar, o código atual pesquisa na coluna "F", se você deseja pesquisar em 11 colunas seria oportuno você nos informar quais são elas.

Postado

Fala Osvaldo, beleza?

 

1) Nenhum, simplesmente o email não foi enviado...

 

2) A principio precisaria verificar se a data é = hoje, mas como não achei uma solução pra isso, utilizei esse código pré-criado para disparar o email quando o status for = Concluido, ai usei a formula pra que quando a data fosse = hoje o status altera para concluido.

 

Essa linha = ActiveCell.Row - 1 eu não faço a minima ideia do que faz...

 

o If eu entendo que é o target da coluna F que é onde ficam os status concluido e em andamento.

 

3) Vou passar 4 colunas, porque ai depois creio que fiquei fácil para alterar: I, L, O e R.

 

Abs,

Postado

@victor

 

No post #5 você colocou um código e comentou "Em tese ele me serve, ..."

 

Aquele código funciona?

 

Eu entendi que você quer enviar a mensagem por e-mail se a data em certa coluna for igual à data atual. Po isso, se aquele código atende a sua necessidade, poderemos introduzir nele a condição da data.

 

Lembrando que aquele código irá rodar ao inserir na coluna "F" a palavra "Concluído". Ou seja, é preciso inserir a palavra via teclado, e não via resultado de fórmula. Antes, é necessário que na coluna "A" esteja um endereço válido de e-mail.

 

Faça o teste. Se não enviar a mensagem experimente eliminar a parte em vermelho  linha = ActiveCell.Row - 1  e testar novamente.

 

Se não funcionar não basta responder aqui  "não funcionou", è necessário descrever em detalhes o que foi feito e o que resultou.

Postado

Fala Osvaldo, beleza?

 

Aquele código funciona sim cara.

 

Eu disse que ele me serve "em tese" porque o meu desejo seria disparar o email por datas, porém como não consegui fazer isso utilizei a alteração de célula.

 

Pra mim o ideal seria a planilha disparar o email de acordo com a data, a gente consegue fazer isso? Caso contrário eu teria que ter 1 coluna adicional pra cada coluna que eu já tenho, só pra colocar "concluido" ou "em andamento".

 

Abs

Postado

Eaí, Victor.

O código do post #5 envia mensagem por e-mail se:
1. houver uma alteração na coluna "F" e
2. se a alteração foi a inserção da palavra "Concluído"

É possível alterar no código essas condições para enviar a mensagem se:
1. houver uma alteração na coluna das datas e
2. essa alteração for a inserção via teclado, ou copiar/colar via mouse, da data do dia

Dessa forma atenderia ao que você deseja?
Se sim, informe a coluna das datas.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!