Notifications
Clear all

Macro para email

3 Posts
2 Usuários
0 Reactions
1,027 Visualizações
(@leozaffa)
Posts: 0
New Member
Topic starter
 

Olá, pessoal! Seguinte, tenho uma planilha "Associates" onde tenho uma fórmula(DA9) linkada à uma célula(H9) que, depedendo do valor posto(em H9), a fórmula resulta em "A", "V" ou "D", representando as cores amarelo, vermelho e verde, respectivamente. O que eu preciso é que, quando o resultado for "A" abra um email dizendo XYZ e quando for "V", um email dizendo ABC.

Como eu não manjo nada de VBA, fui montando um código com o que aprendi(ou não) por ai. Até então, tenho o seguinte:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

If Range("DA9").Select = "A" Then

With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "Título do email"
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End If
End Sub

No arquivo em anexo, é possivel ver que, quando coloco um valor em H9, a fórmula armazenada em DA9, apresenta como resultado a letra A. Sendo assim, quando o A aparecer, preciso que um email a ser preenchido apareça.

Deu para entender, meu povo? Haha

Desde já agradeço,

Leonardo

 
Postado : 14/05/2014 12:47 pm
 jrm
(@jrm)
Posts: 34
Trusted Member
 

tente da seguinte Forma
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) '-substituir N pela coluna em que tenha os emails para quem quer enviar
'verifica se o email é valido e se o cliente possui o estados A (atrasado)
If cell.Value Like "?*@?*.?*" And LCase(Cells(cell.Row, "da").Value) = "A" Then ' - verifica se a coluna ad esta preenchida com A, repetir para quando quer preenchida com V
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = cell.Value
.Subject = "teste" ' assinto do email trocar
.Body = "Exmos Srs" & vbNewLine & vbNewLine & Cells(cell.Row, "B").Value _ ' substituir a letra B pela coluna do nome das pessoas paar quem vai enviar o email
& vbNewLine _ '-colocar o texto aqui
& "Cumprimentos" _
'Podemos enviar um anexo
.Attachments.Add ("c:dadoscarta.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

teste e adapte ao seu caso

 
Postado : 14/05/2014 2:44 pm
(@leozaffa)
Posts: 0
New Member
Topic starter
 

Olá, JRM
Seguinte, no meu caso, não preciso pegar uma lista de pessoas para quem quero enviar o email. Simplesmente preciso que, quando na coluna DA, linha 9 for A, abra uma caixa de email para eu preencher e enviar para um destinatário. Para isso, tentei tirar algumas linhas do código, porém sem sucesso. Alguma dica?

Desde já agradeço,

leozaffa

 
Postado : 16/05/2014 5:58 am