Gerar PDF no Excel automaticamente VBA – Planilha gerar PDF Gratuita
Como você faz para gerar PDF no Excel automaticamente com VBA? Neste artigo veja como criar um relatório de cobrança com Excel VBA, aonde automaticamente faremos com que sejam gerados em PDF ou impressos 400 cobranças para clientes diferentes.
O código aplicado neste relatório pode ser utilizado em várias situações parecidas com pequenas adaptações, veja abaixo no exemplo o código que foi utilizado e como ele funciona para a geração destes dados no passo-a-passo.
O Problema
Temos uma lista com 400 clientes em média, aonde são realizadas cobranças semanais de jornais. Funciona da seguinte forma o processo do cliente:
- Deixa edições dois jornais diariamente na banca, chamaremos de Diário da Rua e Gazeta da Rua.
- Estas quantidades variam de banca a banca.
- No começo da semana é impresso o relatório com a quantidade de periódicos deixados em cada dia para cada um dos clientes.
- Este relatório é utilizado para cobrar os que foram vendidos e recolher os que não foram vendidos.
O problema do processo acima é que são 400 clientes, então o relatório, mesmo que usando PROCV para preencher a planilha com os dados para a cobrança precisa ser impresso um-a-um, selecionar o cliente na lista e clicar em imprimir.
O cliente perde em torno de 4 h para emitir todos os relatórios, sendo que alguns ele ainda esquecia de imprimir ou ficavam fora de ordem.
A solução para este problema foi então gerar estes dados automaticamente com VBA no Excel.
Neste exemplo temos o código para fazer o loop por todos os dados dos clientes, gerar em PDF ou imprimir os relatórios diretamente na impressora à partir do Excel.
Desta forma temos um relatório de cobranças automático no Excel com VBA.
Solução
No Excel fazemos um loop por todas as linha
s dos clientes da planilha de cadastro, os dados dos clientes são colados diretamente na célula aonde está o cliente a ser impresso, os dados são alterados então imediatamente.
Na outra planilha temos então a distribuição que tivemos em cada dia da semana para cada um dos clientes, estes dados são retornados via PROCV para o relatório de cobrança.
No relatório de cobranças Excel VBA temos então o seguinte resultado com a busca de dados à partir desta tabela.
Gerar relatório em PDF ou imprimir VBA Excel
Com o código abaixo temos então a geração do relatório em PDF para ser posteriormente armazenado ou enviado por e-mail e também o código para imprimir o relatório de cobrança para todos os clientes.
Sub lsGerar(ByVal lflImprimir As Boolean) On Error GoTo TratarErro 'Declaração das variáveis 'iTotalLinhas é o total de clientes 'iLinhas é o controle da linha atual no loop 'lstrPasta Pasta aonde salvar os arquivos pdf's Dim iTotalLinhas As Long Dim iLinhas As Long Dim lstrPasta As String 'Total de clientes, de cima para baixo localiza a última célula preenchida da lista iTotalLinhas = Worksheets("Clientes").Cells(Rows.Count, 1).End(xlUp).Row 'Inicia na linha logo abaixo do cabeçalho iLinhas = 2 If lflImprimir = False Then lstrPasta = lfSelecionarPasta If lstrPasta = vbNullString Then Exit Sub End If End If 'Passa por todos os clientes While iLinhas <= 100 'iTotalLinhas 'Atualiza o valor do cliente Worksheets("Recibo").Cells(1, 5).Value = Worksheets("Clientes").Cells(iLinhas, 1).Value If lflImprimir = True Then 'Imprime o recibo ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Else ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=lstrPasta & "\" & Worksheets("Clientes").Cells(iLinhas, 1).Value & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False End If 'Passa para o próximo cliente iLinhas = iLinhas + 1 Wend Sair: Exit Sub TratarErro: 'Tratamento de erro se houverem problemas MsgBox "Houve um erro na impressão!", vbCritical GoTo Sair End Sub 'Procedimento para salvar arquivos Public Function lfSelecionarPasta() As String Dim fDlg As FileDialog Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogFolderPicker) 'Retorna a pasta selecionada If fDlg.Show = -1 Then lfSelecionarPasta = fDlg.SelectedItems(1) Else MsgBox "Não foi selecionada nenhuma pasta" End If End Function Public Sub lsGerarPDF() lsGerar False End Sub Public Sub lsImprimir() lsGerar True End Sub
Download planilha de relatório de cobranças Excel
Para o download do exemplo utilizado neste artigo preencha o seu nome e e-mail no formulário abaixo.
Baixe a planilhaAbraço
Marcos Rieper
Curso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo: