Somases em tabelas diferentes Excel capa
Somases em tabelas diferentes – PROC Matricial Excel
2 de janeiro de 2019
SAP Script Excel VBA Curso VBA
Curso Excel SAP Script – Marcio Ribeiro
10 de janeiro de 2019

Relatório de cobrança Excel VBA

O Excel pode ser uma excelente ferramenta para gerar relatórios. 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.

Relatório VBA de cobrança Excel 2

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:

  1. Deixa edições dois jornais diariamente na banca, chamaremos de Diário da Rua e Gazeta da Rua.
  2. Estas quantidades variam de banca a banca.
  3. No começo da semana é impresso o relatório com a quantidade de periódicos deixados em cada dia para cada um dos clientes.
  4. 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.

Relatório de cobrança Excel VBA 3

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.

Relatório de cobrança Excel VBA 4

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.

Relatório de cobrança Excel VBA 5

No relatório de cobranças Excel VBA temos então o seguinte resultado com a busca de dados à partir desta tabela.

Relatório de cobrança Excel VBA 3

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.

Abraço

Marcos Rieper

2 Comments

  1. Bruno Pereira disse:

    Bom dia,

    vocês fazem plataformas totalmente em formulários VBA por encomenda?

  2. LUZIMAR disse:

    Olá

    Boa noite.

    Preciso de ajuda com uma planilha!

    ( data inicio (D/M/A) – data final (D/M/A) = Nº MESES X VALOR = TOTAL

    Desde já agradeço!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.