Notifications
Clear all

Macro para envio E-mail

3 Posts
2 Usuários
0 Reactions
859 Visualizações
(@romanholi)
Posts: 0
New Member
Topic starter
 

Bom dia!

Fiz uma macro que filtra um relatório pelo responsável, através de um Combobox, salva um PDF na pasta e envia um e-mail.
Tenho duas dúvidas:

1 - Não estou conseguindo deixar a variável Email pública, para utilizar na Sub Envio_Email. Onde estou errando?
.To = Email

2 - Na hora de anexar o PDF, gostaria de anexar o PDF salvo, ou seja, utilizar no código abaixo o mesmo nome que eu utilizei para o salvar. Mas acredito ter que declarar outras variáveis!

myAttachments.Add PastaM & "NÃO CONSIGO DAR O NOME DO PDF.pdf"

Public Email As String


Private Sub Cmd_Enviar_Click()

Dim Email As String


Application.ScreenUpdating = False


Pasta = ThisWorkbook.Path



    Sheets("Base_Dados").Select
    
    ActiveSheet.Range("$A$1:$I$100000").AutoFilter Field:=3, Criteria1:=Me.Cmb_Comprador
    ActiveSheet.Range("$A$1:$I$100000").AutoFilter Field:=8, Criteria1:="Pendente"
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pasta & "Arqs Enviados" & Format(Date, "YY-MM-DD") & "-" & UCase(Me.Cmb_Comprador) & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
    
          
   Email = Application.VLookup(Me.Cmb_Comprador, [Base_Emails], 2, False)
        
    
    Call Envio_Email
    
    
    Range("E2").Select
    ActiveSheet.ShowAllData
    
      

    
Sheets("Menu").Select

 

    
    
End Sub





Sub Envio_Email()


Dim UltimaLinha As Integer
Dim Email As Integer
Dim k As Integer

Dim rg          As Range
Dim rgValida    As Range
Dim wsEmail     As Worksheet
Dim k1           As Integer


PastaM = ThisWorkbook.Path


MsgBox Email
             
    
Set MyOlapp = CreateObject("Outlook.Application")
Set myItem = MyOlapp.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments




   
With myItem
    .To = Email
    '.CC = "a@a.com.br" 'com cópia
    '.BCC = "" 'com cópia oculta
    .Subject = "Cotações Pendentes" & " - " & ActiveSheet.Name
    .Body = "Caro Colaborador" & "," & vbCrLf & vbCrLf & _
                    "Segue anexo contendo ""Cotações Pendentes"" para verificação." & vbCrLf & _
                    "Obrigado - Preços"
                    

    
    .Save
    myAttachments.Add PastaM & "NÃO CONSIGO DAR O NOME DO PDF.pdf"
    .Send
End With


MsgBox "Cronograma Enviado para: " & Sheets("Lst_Emails").Range("J1")

End Sub
 
Postado : 07/09/2017 7:20 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

romanholi,

Boa Tarde!

Veja se assim dá certo:

Private Sub Cmd_Enviar_Click()

Dim Email As String
Dim Arquivo as String

Application.ScreenUpdating = False


Pasta = ThisWorkbook.Path



    Sheets("Base_Dados").Select
   
    ActiveSheet.Range("$A$1:$I$100000").AutoFilter Field:=3, Criteria1:=Me.Cmb_Comprador
    ActiveSheet.Range("$A$1:$I$100000").AutoFilter Field:=8, Criteria1:="Pendente"
   
    Arquivo = Pasta & "Arqs Enviados" & Format(Date, "YY-MM-DD") & "-" & UCase(Me.Cmb_Comprador) & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Arquivo _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
   
         
   Email = Application.VLookup(Me.Cmb_Comprador, [Base_Emails], 2, False)
       
   
    Call Envio_Email (Email, Arquivo)
   
   
    Range("E2").Select
    ActiveSheet.ShowAllData
   
     

   
Sheets("Menu").Select



   
   
End Sub





Sub Envio_Email(Endereço as String, Arq as String)


Dim UltimaLinha As Integer

Dim k As Integer

Dim rg          As Range
Dim rgValida    As Range
Dim wsEmail     As Worksheet
Dim k1           As Integer


PastaM = ThisWorkbook.Path


MsgBox Email
             
   
Set MyOlapp = CreateObject("Outlook.Application")
Set myItem = MyOlapp.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments




   
With myItem
    .To = Email
    '.CC = "a@a.com.br" 'com cópia
    '.BCC = "" 'com cópia oculta
    .Subject = "Cotações Pendentes" & " - " & ActiveSheet.Name
    .Body = "Caro Colaborador" & "," & vbCrLf & vbCrLf & _
                    "Segue anexo contendo ""Cotações Pendentes"" para verificação." & vbCrLf & _
                    "Obrigado - Preços"
                   

   
    .Save
    myAttachments.Add Arq
    .Send
End With


MsgBox "Cronograma Enviado para: " & Sheets("Lst_Emails").Range("J1")

End Sub
 
Postado : 07/09/2017 12:02 pm
(@romanholi)
Posts: 0
New Member
Topic starter
 

Deu certo meu amigo!

Fiz apenas uma alteração que você deve ter esquecido e daí funcionou:

Sub Envio_Email(Endereço as String, Arq as String)
Sub Envio_Email(Email as String, Arq as String)

Obrigado pela Força

 
Postado : 07/09/2017 1:46 pm