Esta é uma solução para imprimir ou gerar em lote PDF de um relatório de cobrança em Excel feito com VBA.
É muito comum termos a necessidade de imprimir ou gerar PDF em lote no Excel.
Digamos que você tenha uma lista com mais de 400 registros e você precisa imprimir este relatório alterando um a um os clientes e salvar em PDF ou ainda imprimir no Excel.
Neste artigo iremos apresentar uma solução criada em Excel e VBA para imprimir em lote cobranças no Excel.
O objetivo é que ao clicar no botão de gerar PDF ou de imprimir a lista altere as informações automaticamente no relatório de cobrança e gere eles em uma pasta ou diretamente na impressora.
Estrutura da Planilha para Gerar PDF no VBA
A estrutura da pasta de trabalho é composta por três planilhas.
- Recibo: Estrutura do recibo pronto utilizando funções PROCV para retornar os dados da cobrança conforme o cliente selecionado ao topo do relatório.
- Clientes: Nesta planilha temos uma lista com todos os clientes que fazem parte das cobranças que serão enviadas.
- Distribuição: Todos os produtos que foram distribuídos aos pontos de venda, estes itens são os os dados que teremos na nossa planilha de cobrança.
Base de Clientes
A base de clientes é composta pelos campos abaixo:
Veja que temos além dos campos do endereço o entregador e a Rota que serão usadas na planilha para que possam ser separados os documentos que irão para cobrança.
Esta é uma lista única de clientes, é à partir dela que iremos fazer o loop para gerar o PDF no Excel e imprimir em lote.
Base Distribuição
A base de dados da distribuição são os dados que constarão na cobrança.
Nele temos além do cliente, chamado aqui de ponto, o produto, as datas em que foram realizadas as entregas/distribuições e a quantidade de itens.
Estas informações são retornadas à partir das funções PROCV que constam na planilha.
Imprimir e Gerar em PDF Excel com VBA
Abaixo temos o código fonte utilizado na planilha para imprimir ou gerar em PDF o relatório de recibos no Excel.
Nele fazemos um loop passando por todos os clientes, realizando a impressão ou geração conforme a ação selecionada.
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 Impressão e Geração PDF Excel
Realize o download da planilha de impressão e geração de PDF no Excel neste botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.