Notifications
Clear all

TRANSFORMAR GUIAS EM PDF E ENVIAR POR EMAIL

20 Posts
3 Usuários
0 Reactions
3,089 Visualizações
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Boa Tarde,
Trabalho em um setor financeiro, de um hospital onde faço o pagamento dos médicos prestadores, o que que acontece todo mês tenho que preencher uma planilha onde contem uma guia para cada médico, esta planilha serve para apurar o custo do setor, depois de preenchido com seus devidos valores (como se fosse um extrato de serviços prestados) tenho que enviar a guia correspondente de cada médico para seu email particular e assim o mesmo proceder com o envio da nota fiscal.
Do que Preciso?

Preciso de uma macro, que transforme cada guia da planilha em um arquivo pdf com o nome do médico, depois que este arquivo em pdf seja enviado por e-mail, a lista de emails esta na ultima aba da planilha com nome e e-mail do médico. Uso office 2010 na empresa e trabalho com o 2016 em casa, segue em anexo um modelo simples da planilha contendo apenas 5 médicos.
Atualmente trabalho com 2 planilhas com 28 médicos cada.
Usamos o Outlook na empresa
Ah sim importante
No final do envio gostaria de receber um email informando quantos emails foram enviados do total de tentativas feitas e os emails que deram falha por qualquer motivo, e todos os emails enviados gostariam que enviasse a confirmação de leitura.

Desde já agradeço!!
Será que é possível fazer algo do tipo?

 
Postado : 07/12/2016 10:48 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde EraldoFer,

Sobre você transformar as guias em pdf no caso do exemplo você pode usar o seguinte código:

Sub SalvarGuiasEmPDF()
    
    Dim Ws          As Worksheet
    
    Dim Caminho     As String
    Dim PlanName    As String
    
    Caminho = ThisWorkbook.Path
    
    For Each Ws In ThisWorkbook.Worksheets
        
        If Trim(Ws.Name) <> Trim("Extrato") And _
        Trim(Ws.Name) <> Trim("emails") Then
        
            PlanName = Ws.Name
            
            Ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            Caminho & "" & PlanName & ".pdf", Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
        
        End If
    Next Ws
        
End Sub

Elas serão salvas na mesma pasta do arquivo. Note que você terá que ajeitar a área das planilhas para o pdf sair corretamente, pode-se fazer isso indo em:
Arquivo-> Imprimir -> Sem Dimensionamento -> Ajustar Planilha em uma página

Sobre enviar por email, talvez algum outro colega do fórum possa te ajudar.

att,

 
Postado : 07/12/2016 12:07 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Boa Tarde,
Amigo

Então, mas pelo que entendi esse codigo ira transformar todas as planilhas em pdf, no entanto não é necessário que a guia extrato e a guia email seja transformada em PDF. Seria possivel adicionar esse tipo de exceção?

 
Postado : 07/12/2016 12:25 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

EraldoFer,

O código não transforma todas as planilhas em PDF, note que coloquei um IF:

If Trim(Ws.Name) <> Trim("Extrato") And _
        Trim(Ws.Name) <> Trim("emails") Then

assim a planilha chamada 'Extrato' e a chamada 'emails' não será transformada, as outras sim.

att,

 
Postado : 07/12/2016 12:31 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Brunoxro,

Entendi,
Farei os testes e dou um retorno,
Desde já agradeço.

Alguém poderia me ajudar com a parte do envio por e-mail.
Outra informação o e-mail terá um texto alem do anexo.

Desde já agradeço a todos que puderem colaborar!!!

 
Postado : 07/12/2016 12:59 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Brunoxro,
Testei e funcionou,
muito obrigado.
Vamos aguardar agora se alguém pode ajudar com o codigo para enviar por email.
Desde já agradeço!!!!!

 
Postado : 07/12/2016 2:17 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Alguém, poderia me ajudar com esta dúvida?

 
Postado : 08/12/2016 8:55 am
(@miguel-70)
Posts: 207
Estimable Member
 

Vem se pode ti ajudar neste link
http://guiadoexcel.com.br/5w2h-envio-po ... -e-outlook

 
Postado : 08/12/2016 9:49 am
(@miguel-70)
Posts: 207
Estimable Member
 

Disponho do modelo em anexo que envia cópia PDF e salva cópia no e-mail remetente.

 
Postado : 09/12/2016 6:51 am
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Boa Tarde,
Miguel70,
fiz os testes aqui mas deu um erro,
Madei em anexo o print do erro.

Aproveitando Miguel, gostaria de tirar algumas duvidas:

1º Seria possivel deixar o envio automático para todos os emails? por exemplo apertar em enviar e a macro manda para todos os médicos conforme a lista de email?
2º como posso formatar o texto do email? Pergunto isso por que existe um padrão, esse padrão consiste no nome do médico, texto especifico com os contatos da instituição e setor.
3º Se ao invês de transformar a aba em pdf eu ja tiver o pdf salvo em uma pasta espefica na maquina e nesse caso eu gostaria de anexar esse arquivo, a relação entre o médico e o arquivo também seria o nome ou matricula do médico. E possivel chegar a esse resultado?

Att.

 
Postado : 09/12/2016 11:17 am
(@miguel-70)
Posts: 207
Estimable Member
 

O servidor rejeitou enviar, provavelmente porque vc não ativo no e-mail "Permitir aplicativos menos seguros: ATIVADA"
Ok vamos trabalhar para deixar o código enviando o e-mail com o anexo PDF, depois proseguiremos
Vamos usar o " [email protected]" pois é mais facil emcaminhar crie uma conta no gmail ou uma que vc ja dispoe

1º - altere as linhas;
Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" 'se for gmail "smtp.gmail.com"
 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 ' se for gmail 465 ' se for hotmail 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "seu_email_aqui@gmail.com" 'Configure aqui seu email hotmail, outlook, msn, live OBRIGATORIOS
 .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Senha_Email_Aqui" ' sua senha email OBRIGATORIO

.From = "<[email protected]>" 'repetir email remetente


2º - Na planilha célula K9 coloque o endereço do destinatário
3º - Entra em sua conta do gmail e click - "minha conta" - depois em " Login e Segurança" vá ate ultima linha e click em "Permitir aplicativos menos seguros: ATIVADA"

Pronto e pra enviar o e-mail com o anexo para qualquer outra conta seja no gmail, hotmail, etc. Vamos ver o resultado.

 
Postado : 09/12/2016 12:32 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Boa Tarde,
Farei os testes e dou retorno, quanto ao servidor de email uso o locaweb, conta empresarial, o aplicativo e o outlook 2010.
Fiz essas perguntas por que existem as duas situações na primeira o pessoal responsavel monta o relatorio via excel e tem que enviar por email
na segunda situação o sistema gera o relatório do sistema em formato pdf e nesse caso só preciso identificar qual médico correspondente e enviar por email como posso fazer o download do sistema pela matricula ou pelo nome, usarei esse requisito para a identificação dos emails.
Eu consigo fazer esses links de email, mesmo sem o outlook? Apenas Curiosidade!!!

Att.

Att.

 
Postado : 09/12/2016 1:28 pm
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Então,
Fiz os testes com a conta gmail, fiz as configurações e funcionou corretamente,
no entanto o email de envio será de um servidor empresarial,tentei configurar mas não funcionou,
com o Hotmail, também não funcionou.

Att.

 
Postado : 10/12/2016 8:32 pm
(@miguel-70)
Posts: 207
Estimable Member
 

Bom dia EraldoFer,
Para funcionar é preciso configurar as duas linhas da porta do servidor, a locaweb não tenho conhecimento se da certo também não sei os números da porta do servidor para testar.
Configuração porta no Hotmail;

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com" 'se for gmail "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 ' se for gmail 465 ' se for hotmail 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "EmailRemetente@hotmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Senha_Email_Aqui" ' sua senha email OBRIGATORIO

.From = "<EmailRemetente@hotmail.com>" 'repetir email remetente

Se o servidor rejeitar o envio vc entra nas configurações conta hotmail e desliga a proteção; "Permitir aplicativos menos seguros: ATIVADA".
Só posso ti ajudar ate aqui, não tenho mais conhecimento para continuar com as dúvidas.
Obrigado.

 
Postado : 11/12/2016 5:16 am
(@eraldofer)
Posts: 70
Trusted Member
Topic starter
 

Bom Dia,
Miguel70

Agradeço, pelas informações entendo que agora é uma questão de configuração mesmo, vou pesquisar junto a TI da empresa qual a porta que é usada para nosso servidor e fazer a devida configuração, assim como farei as configurações para hotmail.

Se puder me ajudar como posso fazer o envio de email em loop?
em excel terei a lista de email (lista simples) nome, matricula e email, como posso fazer o excel pesquisar nessa lista ir na pasta especifica no computador pegar um pdf que esta nomeado com o numero da matricula e mandar por email da lista?

Pode ajudar?

Desde já agradeço!!!!

 
Postado : 11/12/2016 7:21 am
Página 1 / 2