Notifications
Clear all

Macro enviar Email PDF

25 Posts
3 Usuários
0 Reactions
3,671 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Achei esta Macro na internet e gostaria de fazer algumas modificacoes.

Eu quero que ao inves de enviar por email toda a minha planilha, a macro crie um PD,F apenas da planilha ao qual vou colocar o Botao de Macro. Nao preciso que o arquivo seja salva , pode ficar numa pasta temporaria e assim que enviar o mesmo se deleta.

Poderia alguem aqui fazer esta modificacao e me passar ?

Grato mais uma vez.

Andre

Sub eMailActiveWorkbook()

Dim OL As Object
Dim EmailItem As Object
Dim Wb As Workbook

Application.ScreenUpdating = False
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
Set Wb = ActiveWorkbook
Wb.Save
With EmailItem
.Subject = "Esboço Pedido Gauer do Brasil"
.Body = "Segue anexo seu Pedido para Aprovação." & vbCrLf & _
"" & vbCrLf & _
"Obrigado!"
.To = "[email protected]"
.CC = "[email protected]"
.Importance = olImportanceNormal
.Attachments.Add Wb.FullName
.Send

MsgBox "RELATÓRIO ENVIADO COM SUCESSO!", vbInformation, "ENVIADO"

End With

Application.ScreenUpdating = True

Set Wb = Nothing
Set OL = Nothing
Set EmailItem = Nothing

End Sub

 
Postado : 30/11/2015 9:52 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fazerbem,

Boa tarde!

O arquivo anexo, faz o que você quer.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 30/11/2015 12:40 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ola AMigo, testei aqui e ficou legal, porem na minha planilha eu tenho varias abas e nao posso enviar as outras abas em PDF, somente a especifica para este fim.

Percebi que a Macro so funciona se eu acionar pelo Botao, se eu for em Macros / Editar e acionar nao funcionou na minha planilha, mas na sua funcionou ?

Colei no anexo pra entender melhor

Uma das Planilhas que uso neste projeto tem a Aba de nome : MV Meier, mas pode ser MV Recreio, MV Bonsucesso etc, vai depender em qual Aba estarei. logado para enviar o esboço do pedido. Para isso o nome da Aba esta associado a Celula C5 que é o nome fantasia da Loja em questao. ou seja:

C5= MV Meier
C5= MV Recreio
C5 = .......

Desta forma este botao de macro tera em todas as Telas para este Objetivo. Esta Tela por exemplo MV Meier, ao eu acionar a Macro de PDF, ela faz o seguinte:

Sub Enviar_Frete_Lojista()

Range("F5:R56").Select 'estando eu na aba MV Meier por exemplo
Selection.Copy
Sheets("MODELO FRETE LOJISTA").Select
Range("A5").Select
ActiveSheet.Paste

Run "Enviar_Email_Plan" 'Chama a Macro que o Sr. fez.

Range("A5:M56").Select 'aqui limpa a planilha para o proximo envio
Selection.EntireRow.Delete

End Sub

 
Postado : 30/11/2015 4:31 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

ola,

estava aqui pensando, talvez fosse melhor no envio do PDF por email, ao inves da MAcro copiar as inf.para a Aba "Modelo Frete Lojista, a Macro pegasse uma area especifica da Aba da Loja em questao e fizesse o PDF, e mandava este por Email. desta forma nao precisarei ficar com uma aba presente na minha planilha.

Ao acionar a Macro, pega-se a area F4:R56, cria-se uma Aba temporaria, transforma esta area em PDF, envia o email, exclui a area temporaria.

Grato

Andre

 
Postado : 01/12/2015 5:13 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ok.

Testei aqui seu arquivo e está tudo OK. Bem funcional. Creio que a forma como você deixou está ótimo! Assim, basta trocar o nome da aba para o que desejar e clicar no botão ENVIAR que a macro executa seu código, transferindo os dados para a aba Modelo e depois envia o email e limpa a aba modelo para nova remessa.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 01/12/2015 8:42 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Ola amigao, percebi o seguinte no envio da Tabela.

Eu possuo varias planilhas, e a unica que quero fazer o envio, é justamente a Aba "Modelo Frete Lojista", as demais nao quero que gere PDF e nem faça o envio. entao no codigo abaixo, teria como fazer com que apenas a Aba "Modelo Frete Lojista" seja acionada ?

Outra coisa, quando recebi o Email, o PDF ficou grande demais , teria como colocar no codigo algo para eu ir testando qual tamanho seria melhor ? exemplo, estando eu dentro da Macro, teria la Uma linha de comandoque traria o tamanho do PDF ( quero dizer o Zoom da porcentagem) la eu poderia digitar o zoom mais adequado.

Fiz uma modificacao, excluido a Planilha veja como ficou.

Abaixo seu codigo para se possivel fazer 2 as modificacoes que gostaria de ter.

Option Explicit
Sub Enviar_Email_com_PDF()

    '========================================================
    'Essa macro requer que sejam acrescentadas as referências
    'Microsoft Outlook 12.0 (ou maior) Object Library
    'Microsoft Scriping Runtime
    '========================================================

    Dim OL As Object
    Dim EmailItem As Object
    Dim Wb As Workbook
    
    Application.ScreenUpdating = False
    Set OL = CreateObject("Outlook.Application")
    Set EmailItem = OL.CreateItem(olMailItem)
    ActiveSheet.UsedRange.Select
    
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ActiveWorkbook.Path & "Temp.pdf", Quality:=xlQualityStandard _
        , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
        :=False
    
    With EmailItem
        .Subject = "Esboço Pedido Gauer do Brasil"
        .Body = "Segue anexo seu Pedido para Aprovação." & vbCrLf & _
        "" & vbCrLf & _
        "Obrigado!"
        .To = "atendimento-rj@gauerdobrasil.com.br"
        .CC = "contato@fazerbem.com.br.com.br"
        .Importance = olImportanceNormal
        .Attachments.Add ActiveWorkbook.Path & "Temp.pdf"
        .Send
        
        MsgBox "RELATÓRIO ENVIADO COM SUCESSO!", vbInformation, "ENVIADO"
    End With
    
    
    
    Application.ScreenUpdating = True
    
    Set Wb = Nothing
    Set OL = Nothing
    Set EmailItem = Nothing
    
    Call ApagarArquivoTemporário(ActiveWorkbook.Path & "")
End Sub
Sub ApagarArquivoTemporário(ByVal Caminho As String)
    
    
    'Desabilita a atualização automática
    Application.EnableEvents = False
        
    'Declaração de variáveis
    Dim fso As Scripting.FileSystemObject
    Dim fld As Scripting.Folder
    Dim fl As Scripting.File
    
    
    'Aqui é criado o objeto que comunica com as pastas do computador
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'Esse objeto executa um método do FileSystemObject
    'para buscar atribuir à variável fld uma pasta
    Set fld = fso.GetFolder(Caminho)
    
    'Loop em cada elemento (ou seja, arquivo) do caminho desejado:
    For Each fl In fld.Files
        'Verifica se é um arquivo com extensão PDF
        If Right(fl.Name, 3) = "PDF" Or Right(fl.Name, 3) = "pdf" Then
            fl.Delete
        End If
    Next
    'Habilita a atualização automática
    Application.EnableEvents = True
End Sub

 
Postado : 01/12/2015 9:38 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Bem... do meu conhecimento, não sei se tem como fazer alteração no zoom do PDF.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 01/12/2015 10:17 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bem... do meu conhecimento, não sei se tem como fazer alteração no zoom do PDF.

Mas e quanto a estar gerando todos os PDFs das abas ?

Teria como me passar o codigo para ir somente por email o PDF da aba MOdelo Frete Lojista ?

Grato

 
Postado : 01/12/2015 10:24 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fazerbem,

Ah sim!

Havia esquecido do detalhe.

Nessa versão que estou lhe encaminhando, apenas a aba Modelo Frete Lojista será enviada no PDF.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 01/12/2015 12:04 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Wagner Morel, agora sim ficou chupeta !

Por curiosidade , onde mexeu no codigo, pois nao consegui enxergar ainda.

Abracos e meu muito Obrigado !

Andre Luiz

fazerbem,

Ah sim!

Havia esquecido do detalhe.

Nessa versão que estou lhe encaminhando, apenas a aba Modelo Frete Lojista será enviada no PDF.

 
Postado : 01/12/2015 3:19 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Eu reparei que se eu copiar o comando pelo Visual Basic ou Abrir e editar a Macro e copiar seu conteudo e colar no meu sistema , nao funciona, tenho que copiar o seu botao inteiro que esta na Aba 1 e jogar na minha planilha pra dar certo . Nao entendi porque tenho que copiar o botao se copio diretamente no Visual Basic e nao funciona.

Pode explicar sou leigo mesmo,

Andre Luiz

 
Postado : 01/12/2015 3:56 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Defini a impressão, nas configurações do Excel, para uma página só e alterei a linha abaixo. Onde estava:

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ActiveWorkbook.Path & "Temp.pdf", Quality:=xlQualityStandard _
        , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
        :=False

Mudei para:

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ActiveWorkbook.Path & "Temp.pdf", Quality:=xlQualityStandard _
        , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
        :=False

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 02/12/2015 7:37 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Amigo, não testei ainda, farei amanha ete avido, grato

Andre

 
Postado : 02/12/2015 5:22 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Amigo, desculpe te chamar de novo, mas ja quebrei a cabeça aqui e nao consigo copiar a sua macro e jogar dentro de minha Tabela.

Se eu baixar o seu anexo, funciona tudo certo.

Mas se eu copiar o conteudo que esta no Modulo 1 da sua Macro e copiar na minha Tabela e criar um botao para chamar nao vai

Erro de compilacao
Variavel nao definida

Sub Enviar_Email_com_PDF()

    '========================================================
    'Essa macro requer que sejam acrescentadas as referências
    'Microsoft Outlook 12.0 (ou maior) Object Library
    'Microsoft Scriping Runtime
    '========================================================

    Dim OL As Object
    Dim EmailItem As Object
    Dim Wb As Workbook

    Application.ScreenUpdating = False
    Set OL = CreateObject("Outlook.Application")
    Set EmailItem = OL.CreateItem(olMailItem)

Para nesta linha e isso fica frisado (olMailItem)

Porem se eu copiar o seu botao inteiro que esta na Plan 1 de seu projeto ai funciona , mas quando chamo ele dentro de minha macro "Enviar_Frete_Lojista " conforme esta tambem em seu projeto, nao vai, , mas se eu clicar sobre o seu botao que copiei ai funciona.

Que ta acontecendo que nao to entendendo ?

Andre

fazerbem,

Ah sim!

Havia esquecido do detalhe.

Nessa versão que estou lhe encaminhando, apenas a aba Modelo Frete Lojista será enviada no PDF.

 
Postado : 03/12/2015 2:47 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Como eu disse eu fiz os testes no seu anexo e foi tudo certo. Veja que no projeto tem 2 macros, a segunda eu editei ela copiei as instrucoes e colei normalmente em minha planilha como sempre faço. Criei um botao e atribui a macro. Dai não funcionou.

agora como devo proceder para copiar a Instrucao da Sua Macro para o meu projeto ?

 
Postado : 03/12/2015 4:02 pm
Página 1 / 2