Notifications
Clear all

Gerar pdf individual e enviar por email

12 Posts
2 Usuários
0 Reactions
3,006 Visualizações
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Bom dia,

Amigos eu tenho um indicador com várias abas representando um supervisor cada, no botão gerar relatório eu gostaria que convertesse cada aba (exceto menu e colgate palmolive) e enviasse por email... detalhe cada aba (já convertida em pdf irá para um endereço de email diferente.

O código atual é enviado para o gerente de vendas mandando o arquivo inteiro em excel... e estou com bastante dificuldade para transformar esse codigo afim de atender minha necessidade, alguém poderia me ajudar?

Segue arquivo em anexo.

Mto obg aos que se dispuserem a ajudar.

 
Postado : 11/10/2017 7:41 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Esse assuntos já foram demonstrados antes, use a pesquisa do forum!
Para anexar os arquivos via emails, leia: https://www.rondebruin.nl/win/s1/outlook/saveatt.htm

Sub Criar_PDF()
    Dim ws As Worksheet
    Dim Fname As String
    For Each ws In ActiveWorkbook.Worksheets
        On Error Resume Next
        'Cuidado com os nomes(para a variável >>> Fname) das guias, para mais informações leia:
        'https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
        Fname = "C:UsersAleVBADownloads" & ws.Name
        ws.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=Fname, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False
    Next ws
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/10/2017 11:55 am
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Alexandre,

o código para criar pdf deu certo, entretanto o link que mandou não foi mto claro este orienta a incluir o código no proprio outlook... me deixou foi mais confuso.

Eu preciso que ao gerar pdf (com o código que me enviou) a macro envie automaticamente o mesmo pdf via email (não se faz necessário salvar este pdf como backup já que estaria enviando por email, mas se não for possível que salve em uma pasta criada na área de trabalho). Isso é possível?

Desde já mto obg por sua atenção.

 
Postado : 13/10/2017 8:07 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!
Veja se ajuda.
Você pode ter apenas uma variável ao invés de (Fname, StrFile).
Cuidado ao apontar o diretório, eu recomendo fazer uma cópia de reserva dentro de um diretório a parte.

Sub AleVBA_26270()
    Dim ws As Worksheet
    Dim Fname As String
    Dim mess_body As String, StrFile As String, StrPath As String
    Dim appOutLook As Outlook.Application
    Dim MailOutLook As Outlook.MailItem
    
    For Each ws In ActiveWorkbook.Worksheets
        On Error Resume Next
        'Cuidado com os nomes(para a variável >>> Fname) das guias, para mais informações leia:
        'https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
        Fname = "C:UsersalevbaDownloads" & ws.Name
        ws.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=Fname, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False
    Next ws
    
    Set appOutLook = CreateObject("Outlook.Application")
    Set MailOutLook = appOutLook.CreateItem(olMailItem)
    'Altere esse caminho
    StrPath = "C:UsersalevbaDownloads"
        With MailOutLook
        .BodyFormat = olFormatRichText
        .To = "alevba@gmail.com"
        .Subject = "Assunto..."
        .HTMLBody = "Corpo do email..."
        'Verifica as exteções .pdf
        StrFile = Dir(StrPath & "*.pdf*")
        Do While Len(StrFile) > 0
            .Attachments.Add StrPath & StrFile
            StrFile = Dir
        Loop
        '.DeleteAfterSubmit = True
        '.Send 'Caso for enviar, descomentar essa linha e comentar a linha debaixo
        .Display
    End With
    
    MsgBox "Relatórios enviados", vbOKOnly
    'Deleta os arquivos dentro do diretório
    On Error Resume Next
        Kill "C:UsersalevbaDownloads*.pdf*"
    On Error GoTo 0
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/10/2017 10:23 am
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Quando rodo a macro dá um erro 'O tipo definido pelo usuário não foi definido' e aponta o erro aqui:

Sub AleVBA_26270()
Dim ws As Worksheet
Dim Fname As String
Dim mess_body As String, StrFile As String, StrPath As String
Dim appOutLook As Outlook.Application
Dim MailOutLook As Outlook.MailItem

Acredito que eu esteja deixando de fazer alguma coisa, alterei a pasta para salvar, coloquei o endereço de email, mas não obtive êxito.
Pode me dar uma força?

 
Postado : 13/10/2017 10:45 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Nos meus teste eu não tive problema!!

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/10/2017 12:42 pm
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Testei novamente e ocorreu o mesmo erro

Mandei uma print para vc ver se consegue ajudar... mas desde já te agradeço de coração pela força e disposição em ajudar.

Vou pesquisando aqui também se encontrar uma solução antes de vc comunico.

Abraço

 
Postado : 13/10/2017 1:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Faça a referência do outlook (Microsoft Outlook 14.0)

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/10/2017 1:30 pm
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

ok, obg

 
Postado : 13/10/2017 1:58 pm
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Alexandre, tenho um outro indicador que para este preciso enviar somente a planilha ativa... tentei ajustar seu código, mas não consegui.

eu alterei a linha:

For Each ws In ActiveWorkbook.Worksheets

por essa:

Set ws = ActiveSheet

e exclui:

Next ws

No entanto não obtive êxito.

Você consegue adaptar esse código para essa nova necessidade???

 
Postado : 19/10/2017 1:28 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente....
...Não testado.

    'For Each ws In ActiveWorkbook.Worksheets
    '    On Error Resume Next
        'Cuidado com os nomes(para a variável >>> Fname) das guias, para mais informações leia:
        'https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
        Fname = "C:UsersalevbaDownloads" & Name
        ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=Fname, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False
    'Next ws

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/10/2017 1:57 pm
(@rarph84)
Posts: 39
Trusted Member
Topic starter
 

Exatamente isso!!! Mto obg.

 
Postado : 19/10/2017 2:30 pm