Estou estudando VBA a pouco tempo, e estou fazendo um projeto de planilha solicitando que os funcionários PJ emitam as notas.
Eu preciso enviar para o funcionário um e-mail com valor a receber, referente ao dia dos serviços prestados, e quando ele deve emitir a nota.
O primeiro comando da programação é que SE a célula E ="valor" estiver vazia, não enviará o e-mail.
Com a célula preenchida, ele seleciona o outlook app, coloca destinatário do e-mail, cc, título, imagem de corpo e texto.
Porém eu preciso criar um novo SE - caso a célula G = "devolução" estiver preenchida, ele vai adicionar mais uma parte em texto ao corpo do e-mail.
Não consigo fazer isso de jeito nenhum.
Outro problema que tenho também é que ao colocar em Display, ele passa por todos os e-mails que precisam ser exibidos e termina no último e-mail, em uma unica aba. Exemplo, se eu tiver 10 e-mails pra mandar, ele vai exibir todos os emails rapidamente em uma guia só, e não abrir 10 guias;
Coloco a programação aqui e a planilha em anexo para quem puder me ajudar.
(obviamente as imagens no corpo do e-mail não funcionarão pois estão apontando o caminho da minha máquina)
Agradeço desde já
Sub Enviar_Email()
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.createitem(0)
Dim png As String
On Error Resume Next
For linha = 1 To 5
If Teste.Range("E" & linha + 4).Value <> "" Then
With OutlookMail
.To = Teste.Range("C" & linha + 4).Value
.CC = "recursoshumanos@empresa.com" & " financeiro@empresa.com"
.Subject = "NF | Trabalho PJ - " & Teste.Range("B" & linha + 4).Value
png = ThisWorkbook.Sheets("PJ").Range("H" & linha + 4).Value
texto1 = "<body style = font-size:12pt>" & "Olá " & Teste.Range("B" & linha + 4).Value & ", tudo bem?" & "<br>" & "Segue abaixo suas participações no período de: " & Teste.Range("D" & linha + 4).Value
texto2 = "<body style = font-size:14pt>" & "Valor:<b><u> R$" & Teste.Range("E" & linha + 4).Value & ",00 </b></u>" & "<br>"
texto3 = "<body style = font-size:12pt>" & "Estando corretas, favor me encaminhar a NF entre os dias <b><u> " & Teste.Range("F" & linha + 4).Value & "</b></u>."
texto4 = "<body style = font-size:12pt>" & "Cumprindo acordo, estamos descontando <b>R$ " & Teste.Range("G" & linha + 4) & ",00 </b> do seu pagamento, tudo bem?"
texto5 = "<body style = font-size:12pt>" & "Se precisar de mim, sigo a disposição." & "<br>" & "Abraços,"
Pergunta
Thay4591
Olá a todos.
Estou estudando VBA a pouco tempo, e estou fazendo um projeto de planilha solicitando que os funcionários PJ emitam as notas.
Eu preciso enviar para o funcionário um e-mail com valor a receber, referente ao dia dos serviços prestados, e quando ele deve emitir a nota.
O primeiro comando da programação é que SE a célula E ="valor" estiver vazia, não enviará o e-mail.
Com a célula preenchida, ele seleciona o outlook app, coloca destinatário do e-mail, cc, título, imagem de corpo e texto.
Porém eu preciso criar um novo SE - caso a célula G = "devolução" estiver preenchida, ele vai adicionar mais uma parte em texto ao corpo do e-mail.
Não consigo fazer isso de jeito nenhum.
Outro problema que tenho também é que ao colocar em Display, ele passa por todos os e-mails que precisam ser exibidos e termina no último e-mail, em uma unica aba. Exemplo, se eu tiver 10 e-mails pra mandar, ele vai exibir todos os emails rapidamente em uma guia só, e não abrir 10 guias;
Coloco a programação aqui e a planilha em anexo para quem puder me ajudar.
(obviamente as imagens no corpo do e-mail não funcionarão pois estão apontando o caminho da minha máquina)
Agradeço desde já
Sub Enviar_Email()
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.createitem(0)
Dim png As String
On Error Resume Next
For linha = 1 To 5
If Teste.Range("E" & linha + 4).Value <> "" Then
With OutlookMail
.To = Teste.Range("C" & linha + 4).Value
.CC = "recursoshumanos@empresa.com" & " financeiro@empresa.com"
.Subject = "NF | Trabalho PJ - " & Teste.Range("B" & linha + 4).Value
png = ThisWorkbook.Sheets("PJ").Range("H" & linha + 4).Value
texto1 = "<body style = font-size:12pt>" & "Olá " & Teste.Range("B" & linha + 4).Value & ", tudo bem?" & "<br>" & "Segue abaixo suas participações no período de: " & Teste.Range("D" & linha + 4).Value
texto2 = "<body style = font-size:14pt>" & "Valor:<b><u> R$" & Teste.Range("E" & linha + 4).Value & ",00 </b></u>" & "<br>"
texto3 = "<body style = font-size:12pt>" & "Estando corretas, favor me encaminhar a NF entre os dias <b><u> " & Teste.Range("F" & linha + 4).Value & "</b></u>."
texto4 = "<body style = font-size:12pt>" & "Cumprindo acordo, estamos descontando <b>R$ " & Teste.Range("G" & linha + 4) & ",00 </b> do seu pagamento, tudo bem?"
texto5 = "<body style = font-size:12pt>" & "Se precisar de mim, sigo a disposição." & "<br>" & "Abraços,"
.htmlbody = texto1 & "<br><br>" & "<img src=" & Chr(34) & png & Chr(34) & ">" & "<br><br>" & texto2 & "<br>" & texto3 & "<br><br>" & texto5
.display
End With
End If
Next linha
On Error GoTo 0
Set OutlookApp = Nothing
Set OutlookMail = Nothing
End Sub
------------
Já tentei If Teste.Range("G" & linha + 4).Value = "" Then
.htmlbody = texto1 & "<br><br>" & "<img src=" & Chr(34) & png & Chr(34) & ">" & "<br><br>" & texto2 & "<br>" & texto3 & "<br><br>" & texto5
Else
.htmlbody = texto1 & "<br><br>" & "<img src=" & Chr(34) & png & Chr(34) & ">" & "<br><br>" & texto2 & "<br>" & texto3 & "<br>" & texto4 & "<br><br>" & texto5
E não foi... Sempre dá erro no With, no If, etc.
ENVIEI UM GIF COM O PROBLEMA DO E-MAIL
LInk pra Planilha: https://drive.google.com/file/d/1jpKBmdmnTMUIKZNx9I7pJI31vdpFgV8e/view?usp=sharing
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.