Gerador de orçamentos
Uma planilha que monta o orçamento a partir do cadastro de produtos e clientes, calcula descontos e totais sozinha, gera o PDF e guarda cada envio no histórico. A pasta de trabalho abaixo funciona de verdade: escolha o cliente, troque os produtos e as quantidades, depois gere o PDF.
Projeto demonstrativo da Aracne Sistemas. Empresas, nomes e números são fictícios.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | |||||||
| 2 | ORÇAMENTO | Nº | 1287 | ||||
| 3 | |||||||
| 4 | Cliente | Data | 24/10/2026 | ||||
| 5 | Cidade | Ribeirão Preto, SP | Desconto | 5% | |||
| 6 | Código | Descrição | Qtd | Un | Unitário | Total | |
| 7 | Telha trapezoidal TP40 0,50 mm | m² | 58,40 | 18.688,00 | |||
| 8 | Cumeeira trapezoidal | un | 71,20 | 1.708,80 | |||
| 9 | Parafuso autobrocante 4,2×19 (cx 500) | cx | 64,80 | 388,80 | |||
| 10 | |||||||
| 11 | |||||||
| 12 | |||||||
| 13 | |||||||
| 14 | |||||||
| 15 | |||||||
| 16 | Subtotal | 20.785,60 | |||||
| 17 | Desconto | 1.039,28 | |||||
| 18 | Total | R$ 19.746,32 | |||||
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Código | Descrição | Un | Preço |
| 2 | P-1001 | Chapa de aço galvanizado 0,95 mm | un | 189,90 |
| 3 | P-1002 | Perfil U enrijecido 75 mm (6 m) | un | 142,50 |
| 4 | P-1003 | Parafuso autobrocante 4,2×19 (cx 500) | cx | 64,80 |
| 5 | P-1004 | Telha trapezoidal TP40 0,50 mm | m² | 58,40 |
| 6 | P-1005 | Cumeeira trapezoidal | un | 71,20 |
| 7 | P-1006 | Selante PU 400 g | un | 32,90 |
| 8 | P-1007 | Calha moldada 3 m | un | 118,00 |
| 9 | P-1008 | Rufo pingadeira 2 m | un | 46,50 |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Código | Cliente | Cidade | Desconto |
| 2 | C-0291 | Cliente 0291 (Indústria) | Ribeirão Preto, SP | 5% |
| 3 | C-0877 | Cliente 0877 (Revenda) | Franca, SP | 8% |
| 4 | C-1042 | Cliente 1042 (Construtora) | Uberaba, MG | 3% |
| 5 | C-1188 | Cliente 1188 (Revenda) | Araraquara, SP | 0% |
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Nº | Data | Cliente | Total |
| 2 | 1284 | 21/10/2026 | Cliente 0877 (Revenda) | R$ 18.420,60 |
| 3 | 1285 | 22/10/2026 | Cliente 1042 (Construtora) | R$ 7.315,20 |
| 4 | 1286 | 23/10/2026 | Cliente 0291 (Indústria) | R$ 24.908,75 |
Módulo1 (Código)
Option Explicit
' Gera o PDF do orçamento na mesma pasta da planilha e registra no histórico.
Public Sub GerarPDF()
Dim orc As Worksheet
Dim caminho As String
Set orc = ThisWorkbook.Worksheets("Orçamento")
If Trim$(orc.Range("C4").Value) = "" Then
MsgBox "Escolha o cliente antes de gerar o PDF.", vbExclamation
Exit Sub
End If
If Application.WorksheetFunction.CountA(orc.Range("B7:B14")) = 0 Then
MsgBox "Inclua ao menos um item no orçamento.", vbExclamation
Exit Sub
End If
caminho = ThisWorkbook.Path & Application.PathSeparator & _
"Orcamento_" & orc.Range("G2").Value & ".pdf"
orc.ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho, _
Quality:=xlQualityStandard, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
SalvarHistorico caminho
MsgBox "PDF salvo em:" & vbCrLf & caminho, vbInformation
End Sub
' Copia número, data, cliente e total para a aba Histórico e avança a numeração.
Private Sub SalvarHistorico(ByVal caminho As String)
Dim orc As Worksheet, hist As Worksheet
Dim linha As Long
Set orc = ThisWorkbook.Worksheets("Orçamento")
Set hist = ThisWorkbook.Worksheets("Histórico")
linha = hist.Cells(hist.Rows.Count, "A").End(xlUp).Row + 1
hist.Cells(linha, "A").Value = orc.Range("G2").Value
hist.Cells(linha, "B").Value = Date
hist.Cells(linha, "C").Value = orc.Range("C4").Value
hist.Cells(linha, "D").Value = orc.Range("G18").Value
hist.Hyperlinks.Add Anchor:=hist.Cells(linha, "E"), _
Address:=caminho, TextToDisplay:="Abrir PDF"
orc.Range("G2").Value = orc.Range("G2").Value + 1
End Sub
' Limpa os itens e o cliente para começar um orçamento novo.
Public Sub NovoOrcamento()
With ThisWorkbook.Worksheets("Orçamento")
.Range("C4").ClearContents
.Range("B7:B14,D7:D14").ClearContents
.Range("C4").Select
End With
End SubO que a automação resolve
Uma fonte para os preços
Produtos e clientes ficam em abas próprias. O orçamento busca descrição, unidade, preço e desconto com PROCV, então um reajuste feito no cadastro vale para o próximo orçamento sem ninguém editar fórmula.
PDF e histórico num clique
A macro confere se há cliente e itens, exporta o PDF numerado, registra o envio no histórico e avança a numeração. Some o trabalho de salvar, renomear e anotar cada arquivo.
Código que a equipe entende
O VBA fica comentado em português, com nomes claros e validações antes de cada passo. Dá para ajustar a regra de desconto ou o layout do PDF sem depender de quem escreveu.