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 ####-#### via Format no Exit.
  • txtCliente, txtEndereco, txtBairro, txtCidade — TextBoxes simples, txtEndereco com MultiLine = 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ão Carregar ao lado chama Application.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.

Dez Jato operadora

Boas práticas de manutenção do macro em produção

  1. Versionamento: guarde cópias do .cdr template e do módulo .bas exportado (File > Export > VBA Project) em pasta com data (ex.: v2024.03.15).
  2. Teste de regressão: após qualquer alteração no layout (nova camada, renomear Shape), rode checklist completo em máquina de homologação.
  3. Tratamento de erro global: adicione On Error GoTo ErrHandler em todas as rotinas públicas; grave log em \servidor\logs\vba_laudo_YYYYMMDD.txt com Err.Number, Err.Description, Erl(), usuário (Environ("USERNAME")) e timestamp.
  4. Desempenho: desative Application.Optimization = True e Application.EventsEnabled = False durante preenchimento em lote; reative ao final.
  5. 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

0 de 9 concluídos

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.