Notifications
Clear all

Macro para enviar plalnilha por email como PDF

5 Posts
4 Usuários
0 Reactions
3,058 Visualizações
(@scainet)
Posts: 33
Eminent Member
Topic starter
 

Bom dia galera.
Eu já quebrei a cabeça pesquisando aqui em outros sites para resolver sozinho o problema, mas não tive êxito.

Conforme arquivo em anexo, eu gostaria que a macro convertesse a planilha ativa em PDF e anexasse ela em um novo email do Outlook.
Eu consegui fazer quase tudo, porém ela está anexando a planilha em .xlsm e não em .pdf como eu preciso.

Além disso ai, eu também queria fixar um título do email pelo código VBA.
Os destinatários e o envio do email será feito manual após a macro criar o novo email como anexo já preparado.

Agradeço desde já qualquer ajuda.

 
Postado : 31/12/2014 6:14 am
(@celso89)
Posts: 1
New Member
 

Bom, sou novo no fórum mas vou tentar te ajudar baseado em um código que tenho aqui.

Primeiramente, uma sugestão: não coloque no código um diretório específico, visto que isto pode causar problemas para o funcionamento da macro em outros computadores. Você pode definir uma variável para o diretório em que a planilha está localizada:

sPath = ActiveWorkbook.Path

Deste modo, o código ficaria:

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath + "NomedoArquivo", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

Acredito que seja mais fácil mandar email utilizando um código para abrir o Outlook e usando uma string para definir a extensão do arquivo.

Dim ext as string
ext = "PDF"

Var = Enviar(ext) ' Utiliza a funcao para enviar email

Veja se o código abaixo atende sua necessidade:

Function Enviar(ext) 
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

sPath = ActiveWorkbook.Path
On Error Resume Next
With OutMail
    .Display
    End With

    With OutMail
    .Subject = "Assunto"
    .body = "Corpo do Email"
    .Attachments.Add sPath + "NomedoArquivo." + ext
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Function

Espero ter ajudado ;)

 
Postado : 31/12/2014 2:08 pm
(@miguel-70)
Posts: 207
Estimable Member
 

Veja se este modelo lhe atende.
Testado Excel 2010, este modelo não usa Outlook, envia direto pelo Excel
Comente resultado.

 
Postado : 01/01/2015 11:02 am
(@scainet)
Posts: 33
Eminent Member
Topic starter
 

Bom, sou novo no fórum mas vou tentar te ajudar baseado em um código que tenho aqui.

Primeiramente, uma sugestão: não coloque no código um diretório específico, visto que isto pode causar problemas para o funcionamento da macro em outros computadores. Você pode definir uma variável para o diretório em que a planilha está localizada:

...

Espero ter ajudado ;)

Muito obrigado Celso89.
Apanhei um pouco aqui, mas consegui fazer funcionar com seus códigos.
Realmente o sPath é necessário, pois nem sempre a planilha estará na mesma pasta em computadores alheios.
Segue em anexo a minha planilha atualizada com seus códigos.

Veja se este modelo lhe atende.
Testado Excel 2010, este modelo não usa Outlook, envia direto pelo Excel
Comente resultado.

Miguel, gostei muito do seu modelo.
Porém no momento não é o que preciso, pois a planilha será usada basicamente na empresa, onde utilizamos o Outlook.
Mas já salvei sua planilha aqui porque sei que cedo ou tarde me será útil. Obrigado.

 
Postado : 03/01/2015 6:48 am
(@fabnigz)
Posts: 1
New Member
 

Show!

 
Postado : 07/01/2016 7:44 am