Automatizar relatórios de emergência para equipes de desentupimento em São Paulo com VBA
Aprenda a criar relatórios automáticos de emergência para equipes de desentupimento usando VBA no CorelDRAW. Reduza erros e ganhe agilidade no atendimento 24h.
Você já perdeu minutos preciosos copiando dados de um chamado para o layout do laudo enquanto o cliente espera e a equipe aguarda liberação para o próximo atendimento? Em plantões de emergência na capital paulista, cada segundo de digitação manual é tempo roubado da resolução do problema — e abre porta para erros que voltam como retrabalho no dia seguinte.
A automação via VBA no CorelDRAW transforma esse gargalo em fluxo contínuo: o técnico preenche um formulário único, e o macro popula o template gráfico, gera o PDF padronizado e arquiva a cópia de auditoria sem cliques extras. O resultado é laudo técnico consistente, croqui de rede inserido com precisão e rastreabilidade total do atendimento.
Este tutorial mostra como estruturar o template, construir o UserForm validado, vincular campos ao documento e publicar o relatório final — tudo rodando localmente, sem dependência de internet, pronto para o plantão 24 horas.
Estrutura do template CorelDRAW para laudo de emergência
Comece criando um arquivo .cdr mestre com camadas organizadas: Cabecalho, DadosCliente, CroquiRede, Observacoes, Rodape. Em cada camada, posicione Shapes de texto com nomes únicos via painel Object Manager (ex.: txtCliente, txtEndereco, txtEquipamento, txtHoraChegada, txtHoraSaida). Aplique estilos de parágrafo (Estilo_Laudo_Titulo, Estilo_Laudo_Corpo) para garantir formatação consistente quando o VBA escrever nos campos.
Insira placeholders gráficos para o croqui: uma camada SimbolosRede contendo Symbols de caixa de inspeção, poço de visita, ramal predial e trecho de tubulação. O VBA clonará esses símbolos (Symbol.Clone) e posicionará conforme coordenadas informadas no formulário. Defina também uma área de assinatura digital (Shape retângulo nomeado areaAssinaturaTecnico, areaAssinaturaCliente) que receberá imagem capturada via tablet ou touchscreen.
Salve o template como Template_Laudo_Emergencia.cdr em pasta de rede acessível offline (sincronizada via OneDrive/SharePoint com Always keep on this device). O macro abrirá esse template via Application.Documents.Open e trabalhará na instância aberta, preservando o original.
UserForm validado para coleta de dados no campo
No editor VBA (Alt+F11), insira um UserForm chamado frmLaudoEmergencia. Adicione controles:
txtOS(TextBox) — número da ordem de serviço, máscara####-####viaFormatnoExit.txtCliente,txtEndereco,txtBairro,txtCidade— TextBoxes simples,txtEnderecocomMultiLine = True.cmbTipoObstrucao(ComboBox) — lista:Gordura,Raízes,Objeto Estranho,Colapso Estrutural,Outro.cmbEquipamento(ComboBox) —Hidrojateamento,Mola Rotativa,Caminhão Vácuo,Câmera Inspeção,Manual.dtpDataAtend(DatePicker),txtHoraChegada,txtHoraSaida(TextBoxes com máscara##:##).txtObservacoes(TextBox,MultiLine = True,EnterKeyBehavior = True).imgAssinaturaTecnico,imgAssinaturaCliente(Image controls) — botãoCarregarao lado chamaApplication.FileDialog(msoFileDialogFilePicker)para selecionar PNG/JPG.- Botões
cmdGerar,cmdLimpar,cmdCancelar.
No módulo do formulário, implemente validação no evento cmdGerar_Click:
Private Sub cmdGerar_Click()
If Me.txtOS.Value = "" Then
MsgBox "Informe o número da OS.", vbExclamation, "Campo obrigatório"
Me.txtOS.SetFocus
Exit Sub
End If
If Me.cmbTipoObstrucao.ListIndex = -1 Then
MsgBox "Selecione o tipo de obstrução.", vbExclamation, "Campo obrigatório"
Me.cmbTipoObstrucao.SetFocus
Exit Sub
End If
' ... demais validações ...
Call PreencherLaudo(Me)
Unload Me
End Sub
A máscara de CEP pode ser aplicada no txtCEP_Exit: Me.txtCEP.Value = Format(Me.txtCEP.Value, "#####-###"). Para telefone: Format(value, "(##) #####-####").
Vinculando dados do formulário ao documento CorelDRAW
Crie um módulo padrão modLaudoEmergencia com a rotina PreencherLaudo(frm As frmLaudoEmergencia). Abra o template, acesse as camadas e Shapes por nome e escreva os valores:
Sub PreencherLaudo(frm As frmLaudoEmergencia)
Dim doc As Document
Set doc = Application.Documents.Open("\\servidor\templates\Template_Laudo_Emergencia.cdr")
With doc.Layers("DadosCliente")
.Shapes("txtOS").Text.Story.TextRange.Text = frm.txtOS.Value
.Shapes("txtCliente").Text.Story.TextRange.Text = frm.txtCliente.Value
.Shapes("txtEndereco").Text.Story.TextRange.Text = frm.txtEndereco.Value & " - " & frm.txtBairro.Value & " - " & frm.txtCidade.Value
.Shapes("txtTipoObstrucao").Text.Story.TextRange.Text = frm.cmbTipoObstrucao.Value
.Shapes("txtEquipamento").Text.Story.TextRange.Text = frm.cmbEquipamento.Value
.Shapes("txtDataHora").Text.Story.TextRange.Text = Format(frm.dtpDataAtend.Value, "dd/mm/yyyy") & " | " & frm.txtHoraChegada.Value & " - " & frm.txtHoraSaida.Value
.Shapes("txtObservacoes").Text.Story.TextRange.Text = frm.txtObservacoes.Value
End With
' Inserir assinaturas como imagens vinculadas
If frm.imgAssinaturaTecnico.Picture <> Nothing Then
doc.Layers("Rodape").Shapes("areaAssinaturaTecnico").Delete
doc.ActiveLayer.ImportEx frm.imgAssinaturaTecnico.Picture, cdrImportAsPicture
' posicionar e redimensionar...
End If
' Gerar croqui simplificado (exemplo: 3 símbolos)
Call InserirCroquiSimples(doc, frm)
' Exportar PDF e salvar cópia
Call ExportarEFiltrar(doc, frm.txtOS.Value)
doc.Close cdrDoNotSaveChanges ' template original intacto
End Sub
A rotina InserirCroquiSimples clona símbolos da camada SimbolosRede e posiciona em coordenadas relativas (ex.: ponto de entrada, caixa de gordura, poço de visita). Use Shape.SetPosition x, y e Shape.SizeWidth, SizeHeight para padronizar escala.
Exportação PDF, arquivamento e envio por e-mail
A rotina ExportarEFiltrar cuida da publicação final:
Sub ExportarEFiltrar(doc As Document, osNumero As String)
Dim pdfPath As String, cdrPath As String
Dim dataArq As String: dataArq = Format(Date, "yyyymmdd")
pdfPath = "\\servidor\laudos\OS_" & dataArq & "_" & osNumero & ".pdf"
cdrPath = "\\servidor\auditoria\OS_" & dataArq & "_" & osNumero & ".cdr"
' Exportar PDF com configurações de impressão
Dim pdfSettings As StructPdfSettings
pdfSettings.Author = "Equipe Desentupimento SP"
pdfSettings.Title = "Laudo Emergência OS " & osNumero
pdfSettings.Subject = "Relatório técnico de desobstrução"
pdfSettings.Keywords = "desentupimento, laudo, emergência, São Paulo"
pdfSettings.CompressText = True
pdfSettings.CompressImages = True
pdfSettings.ImageCompression = cdrJPEGCompression
pdfSettings.JPEGQuality = 85
doc.PublishToPDF pdfPath, cdrPDFRangeAllPages, pdfSettings
' Salvar cópia preenchida para auditoria
doc.SaveAs cdrPath
' Enviar e-mail via Outlook (opcional, se online)
On Error Resume Next
Dim olApp As Object, olMail As Object
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)
With olMail
.To = "gestao@empresa.com.br"
.Subject = "Laudo Emergência - OS " & osNumero
.Body = "Segue em anexo laudo de emergência da OS " & osNumero & "."
.Attachments.Add pdfPath
.Send
End With
On Error GoTo 0
End Sub
Se o notebook estiver offline, o e-mail fica na Outbox e sai assim que houver conexão. O PDF e o .cdr de auditoria já estão salvos na rede.
Integração com agendador noturno e alertas de escalonamento
O laudo automatizado ganha força quando conectado a outras rotinas da operação. O agendador noturno de equipes de desentupimento na capital paulista distribui OSs para o plantão; ao finalizar, o técnico abre o template via atalho na barra do CorelDRAW (Tools > Macros > Run > modLaudoEmergencia.MostrarFormulario). O alerta automático para escalonamento de equipes 24 horas na Grande São Paulo monitora tempo de resposta e dispara aviso se o laudo não for gerado em até 30 minutos após HoraSaida.
Para gestão de contratos recorrentes com condomínios, o painel de controle para gestão de contratos com condomínios e empresas consolida os laudos por cliente e período, facilitando relatórios mensais de SLA.
Boas práticas de manutenção do macro em produção
- Versionamento: guarde cópias do
.cdrtemplate e do módulo.basexportado (File > Export > VBA Project) em pasta com data (ex.:v2024.03.15). - Teste de regressão: após qualquer alteração no layout (nova camada, renomear Shape), rode checklist completo em máquina de homologação.
- Tratamento de erro global: adicione
On Error GoTo ErrHandlerem todas as rotinas públicas; grave log em\servidor\logs\vba_laudo_YYYYMMDD.txtcomErr.Number,Err.Description,Erl(), usuário (Environ("USERNAME")) e timestamp. - Desempenho: desative
Application.Optimization = TrueeApplication.EventsEnabled = Falsedurante preenchimento em lote; reative ao final. - Treinamento: grave vídeo curto (3 min) mostrando abertura, preenchimento, geração e verificação do PDF. Disponibilize na intranet da equipe.
Conclusão prática
Automatizar o laudo de emergência no CorelDRAW com VBA elimina a digitação repetitiva, padroniza a comunicação técnica e cria rastreabilidade imediata — tudo rodando no notebook do técnico, sem depender de conexão estável. Implemente o template, valide o formulário e integre ao fluxo de despacho noturno; a equipe ganha agilidade, a gestão ganha visibilidade e o cliente recebe documento profissional no ato. Comece hoje com um piloto em uma equipe de plantão e mensure a redução de tempo por chamado.
Checklist prático
Perguntas frequentes
Por que usar VBA no CorelDRAW para relatórios de desentupimento?
O VBA permite integrar dados técnicos diretamente nos layouts gráficos do CorelDRAW, eliminando a digitação manual e padronizando laudos, croquis e ordens de serviço com agilidade.
Como capturar dados do chamado para preencher o relatório automaticamente?
Utilize UserForms no VBA para coletar informações como endereço, tipo de obstrução e equipamento usado. Esses dados alimentam variáveis que preenchem campos de texto e formas no documento CorelDRAW.
É possível gerar PDFs prontos para envio ao cliente após o atendimento?
Sim. O macro pode exportar a página ativa ou o documento inteiro como PDF com nomeação padronizada (data, cliente, OS) e salvar em pasta de rede ou anexar ao e-mail via Outlook Automation.
Como evitar erros quando a equipe preenche o formulário com pressa?
Valide campos obrigatórios no evento BeforeClose do UserForm, use máscaras para CEP e telefone, e trave edição de campos calculados. Mensagens claras orientam o operador antes de confirmar.
O modelo funciona para plantões noturnos e fins de semana?
Sim. O código roda localmente no notebook do técnico ou em estação compartilhada. Não depende de servidor web, funcionando offline. Basta abrir o template .cdr e executar a macro.
Como padronizar croquis de rede de esgoto no relatório?
Crie uma biblioteca de símbolos (caixas de inspeção, ramais, poços de visita) como Symbols no CorelDRAW. O VBA insere, posiciona e dimensiona esses símbolos conforme dados do formulário.