Página 1 de 1

adaptar envio de email [resolvido]

Enviado: Dom Nov 17, 2013 7:09 pm
por jrm
OLa a todos os execlistas,

Mais uma vez preciso da vossa ajuda, estou com alguma dificuldade em adaptar uma nova parte ao modelo de cadastaro
Passo a exlicar:
eu acrescentei uma coluna que define a validade dos dados como "valido" ou "caducado" coluna AF, queria sempre que o estado seja Caducado (coluna AF) envie email com a informação das colunas AA, AB,AC,AD e AE , no texto do email.
encontrei esta macro mas estou com dificuldade em fazer com que va buscar os dados, esta macro seria para ser acionada por um botão no form cadastro.
Sub Enviar_EMail()

Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo limpa

For Each cell In Columns("N").Cells.SpecialCells(xlCellTypeConstants)
'verifica se o email é valido e se o cliente possui o estados A (atrasado)
If cell.Value Like "?*@?*.?*" And LCase(Cells(cell.Row, "AF").Value) = "a" Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "Aviso"
.Body = "Caro " & Cells(cell.Row, "B").Value _
& vbNewLine & vbNewLine & _
"Entre em contato com nosso serviço de cobrança " & _
"os seguintes documentos estão caducados" '(aqui seria para inserir os valores das colunas AA, AB,AC,AD e AE)
'Podemos enviar um anexo
.Attachments.Add ("c:\dados\carta.txt")
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
MsgBox ("Email enviado com sucesso..." & " para " & Cells(cell.Row, "B").Value)
End If
Next cell
limpa:
Set OutApp = Nothing
Application.ScreenUpdating = True

End Sub

Re: adaptar envio de email

Enviado: Qui Nov 21, 2013 12:38 pm
por Marciel Silva
jrm, boa tarde!

Anexe uma planilha de exemplo para ficar mais fácil a solução do seu problema!!

Att,

Re: adaptar envio de email

Enviado: Qui Nov 21, 2013 1:06 pm
por Marciel Silva
Boa tarde!

Veja se esse exemplo lhe atende.

Digite "Caducado" em Status para abrir o outlook com as informações!!!

Att,

Re: adaptar envio de email

Enviado: Seg Nov 25, 2013 8:55 pm
por Valderei
Olá Maciel Silva.
Estou com o mesmo código que o amigo lhe pediu ajuda.
Minha intenção é semelhante ao que ele quer, porém pretendo que seja enviado um aviso ao nome que estiver aparecendo no meu Formulário.

A ideia é de que eu possa escolher quando enviar um e-mail ou não, terei um TextBox com o nome do destinatário e outro TextBox com o endereço de e-mail, tudo isso salvo na planilha base, e caso queira enviar um e-mail para ele avisando da inclusão de um novo registro, clicaria no botão Enviar E-mail de Alerta, caso contrário não faria a notificação.
Hoje meu formulário mantem a planilha "Base" oculta, faço isto para evitar alterações de dados e perda de informações.

O código que tenho é idêntico ao do amigo jrm, apenas envia o e-mail caso a coluna "O" tenha o dado "Sim" e também se a planilha base estiver visivel.
Então o plano é de ter o botão de envio sempre que desejar e também a planilha base ocultada.

Vou anexar meu formulário para que possa verificar com mais facilidade o que gostaria que ocorresse e ver se há condição.

Re: adaptar envio de email

Enviado: Ter Nov 26, 2013 8:01 am
por Marciel Silva
Valderei,

Baixei sua planilha!

Estou cadastrando um novo registro como exemplo, porém o campo email não aceita digitação. Você colocou alguma regra para aceitar digitar?
Eu não encontrei nada impedindo!

Att,

Re: adaptar envio de email

Enviado: Ter Nov 26, 2013 9:23 am
por Valderei
Olá Maciel.
Dentro do código do formulário o campo de E-mail esta como "Locked=True", precisas entrar lá e desbloquear, deixei bloqueado pois será carregado automaticamente quando puxar o nome do coordenador.

É no "Private Sub HabilitaControles()"

Depois disso poderá digitar dentro do TextBox, tanto este quando o do nome do coordenador estão "Locked=True".


Obrigado pela ajuda.

Re: adaptar envio de email

Enviado: Ter Nov 26, 2013 10:44 am
por Marciel Silva
Valderei,

Mais uma dúvida!!!

O email vai ser destinado a quem? Analista ou para o coordenador?

att,

Re: adaptar envio de email

Enviado: Ter Nov 26, 2013 4:02 pm
por Valderei
Olá Maciel.
Será sempre o nome do Coordenador que o e-mail será direcionado.

Re: adaptar envio de email

Enviado: Qua Nov 27, 2013 6:44 pm
por jrm
Boa noite

Peço desde já desculpa por ter demorado tanto a responder, no entretanto também já consegui resolver o meu problema. Agradeço muito a ajuda. Faltava apenas um pormenor que eu não estava a entender, bastou acrescentar a localização dos dados Set wbCadastro = Workbooks.Open(Filename:=caminhoCompleto, ReadOnly:=True)
.
Usei o seguinte código:

Private Sub Email_Click()
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Dim caminhoCompleto As String

caminhoCompleto = wbCadastro.FullName

Set wbCadastro = Workbooks.Open(Filename:=caminhoCompleto, ReadOnly:=True)

Set OutApp = CreateObject("Outlook.Application")

On Error GoTo limpa


With wsCadastro
For Each cell In Columns("N").Cells.SpecialCells(xlCellTypeConstants)
'verifica se o email é valido e se o cliente possui o estados A (atrasado)
If cell.Value Like "?*@?*.?*" And LCase(Cells(cell.Row, "AF").Value) = "caducada" Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "teste"
.Body = "Exmos " & Cells(cell.Row, "B").Value _
& vbNewLine & vbNewLine & _
"Entre em contato com nosso serviço de cobrança " & _
"para tratar assunto de seu interesse com urgência"
'Podemos enviar um anexo
.Attachments.Add ("c:\dados\carta.txt")
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
MsgBox ("Email enviado com sucesso..." & " para " & Cells(cell.Row, "B").Value)
End If
Next cell
limpa:
Set OutApp = Nothing
Application.ScreenUpdating = True
End With

End Sub

Mas aproveito para pedir mais umas ajudas uma vez que eu sou muito pouco entendido em vba, mas vi algures por aqui um exemplo em que todas as folhas do livro ficam ocultas gostava de saber como é possível fazer isso. o exemplo que eu encontrei é gestão de contas do Meste Poiamen,.
Mais uma vez muito obrigado.