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 = "email1.@yyy.com.br"
.CC = "email2.@xxx.com.br"
.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
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
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
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
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
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
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
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
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
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.
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
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
Amigo, não testei ainda, farei amanha ete avido, grato
Andre
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.
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 ?