Gere relatórios de visita técnica de esgoto no CorelDRAW via VBA

Automatize laudos de inspeção de esgoto no CorelDRAW com VBA. Reduza erros, padronize layouts e ganhe agilidade em campo com macros personalizadas.

Você chega no escritório com dez fichas de inspeção de esgoto na mão, cada uma com croqui, medições e fotos diferentes. O prazo para entregar os laudos ao cliente vence amanhã de manhã. Abrir o CorelDRAW, copiar o modelo, colar textos, ajustar fontes, inserir imagens, exportar PDF — multiplicado por dez — consome horas que sua equipe não tem. E se um único campo de “diâmetro nominal” sair errado em três laudos, a responsabilidade técnica recai sobre você.

A automação via VBA transforma esse cenário: a macro lê os dados de uma planilha mestra, abre o template validado, preenche todos os placeholders, insere as fotos nas posições corretas, exporta PDF/X-1a pronto para impressão e fecha o documento — tudo em segundos por laudo. O ganho não é apenas velocidade; é a eliminação de erros de digitação e a garantia de que todo relatório segue o mesmo padrão visual exigido pela norma ABNT NBR 13.684.

Neste guia, você verá o passo a passo para estruturar o template, mapear os objetos, escrever o loop de geração e publicar os PDFs sem intervenção manual. O código apresentado funciona no CorelDRAW X7 em diante e pode ser adaptado para outras tipologias de laudo técnico.

Estrutura do template mestre no CorelDRAW

Crie um arquivo Template_Visita_Esgoto.cdr contendo apenas o layout fixo: logotipo, cabeçalho normativo, tabelas de dados, áreas para croquis e rodapé com numeração de página. Trave as camadas de fundo (“Layout_Fixo”) para que a macro não as mova acidentalmente. Em camadas editáveis (“Dados_Variaveis”), insira caixas de texto artístico ou parágrafo para cada campo dinâmico e nomeie cada shape via painel Object Manager com prefixo semântico: txtCliente, txtEndereco, txtDataVisita, txtDiametro, txtProfundidade, txtObservacoes, imgCroqui, imgFoto1, imgFoto2.

Use estilos de texto (Text Styles) para títulos, corpo e observações; assim, alterações de fonte ou tamanho propagam-se a todos os relatórios sem tocar no código. Defina margens de sangria de 3 mm e marcas de corte no Document Setup. Salve o template em pasta de rede acessível somente leitura para a equipe, evitando alterações acidentais.

Mapeamento de dados e planilha fonte

A fonte de dados mais simples é uma planilha Excel (Visitas_Esgoto.xlsx) com colunas idênticas aos nomes dos shapes (sem o prefixo txt/img). Exemplo de cabeçalhos: Cliente, Endereco, DataVisita, Diametro, Profundidade, Observacoes, CaminhoCroqui, CaminhoFoto1, CaminhoFoto2. Cada linha representa uma visita. Mantenha a planilha em OneDrive/SharePoint ou pasta sincronizada para acesso multiusuário.

No VBA, use ADO para ler a planilha sem abrir o Excel, ganhando velocidade e evitando instâncias órfãs:

Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisMacro.Path & "\Visitas_Esgoto.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'"
Set rs = cn.Execute("SELECT * FROM [Visitas$]")
Do Until rs.EOF
    ' processa cada registro
    rs.MoveNext
Loop
rs.Close: cn.Close

Valide dados críticos antes de gerar: CNPJ/CPF com máscara, coordenadas GPS no formato decimal, diâmetro numérico maior que zero. Rejeite linhas inválidas gravando log em Erros_Importacao.txt para revisão posterior.

Loop de geração e preenchimento automático

Para cada registro válido, a macro executa:

  1. Set doc = Application.OpenDocument(templatePath) — abre cópia do template.
  2. doc.Activate — foco no documento ativo.
  3. Preenchimento de textos: doc.ActiveLayer.Shapes("txtCliente").Text.Story.Text = rs("Cliente") (repita para cada campo).
  4. Inserção de imagens: doc.ActiveLayer.ImportEx(rs("CaminhoCroqui"), cdrPlaceAsShape).Name = "imgCroqui"; depois posicione e redimensione via bounding box da camada placeholder.
  5. Atualização de campos de data/hora automáticos: doc.ActiveLayer.Shapes("txtDataEmissao").Text.Story.Text = Format(Now, "dd/mm/yyyy HH:mm").
  6. doc.PublishToPDF pdfPath, pdfPreset := "PDF_X1a_2001" — exporta silenciosamente.
  7. doc.Close cdrDoNotSaveChanges — fecha sem sujar o template.

Desative a renderização de tela durante o lote: Application.Optimization = True no início e False ao final. Processe em blocos de 50 documentos, forçando CollectGarbage a cada iteração para liberar memória GDI.

Configuração de preset PDF/X-1a para impressão gráfica

Crie um preset de exportação chamado PDF_X1a_2001 via File > Publish to PDF > Settings > Save As. Marque: compatibilidade PDF/X-1a:2001, CMYK, fontes embutidas, sangria de 3 mm, marcas de corte e registro, resolução 300 dpi para imagens. No VBA, referencie pelo nome:

doc.PublishToPDF pdfFullPath, pdfPreset := "PDF_X1a_2001"

Isso garante que a gráfica receba arquivos prontos para chapa sem retrabalho. Teste impressão em prova digital antes de liberar a primeira tiragem automatizada.

Tratamento de erros e logs de auditoria

Envolva o loop principal em On Error GoTo ErrHandler. No label ErrHandler, grave no log: DataHora, NumeroLinha, Cliente, Err.Number, Err.Description. Continue para o próximo registro (Resume NextLine) para não travar o lote inteiro por uma falha pontual. Ao final, abra o log automaticamente no Bloco de Notas para revisão rápida.

Implemente contador de sucessos e falhas; exiba MsgBox resumido: “Gerados 87 relatórios. 3 falhas — verifique Log_Erros.txt”. Isso dá visibilidade imediata ao operador.

Integração com fluxo de campo e gestão de equipes

Equipes de campo podem preencher formulários no celular (Google Forms, Microsoft Forms, Power Apps) que alimentam a planilha mestra em tempo real. Ao retornar à base, o técnico dispara a macro via atalho Ctrl+Shift+R ou botão na barra de ferramentas personalizada do CorelDRAW. Para ambientes com MacBook via Parallels, veja as dicas de performance em Automação VBA no CorelDRAW em MacBook corporativo via Parallels.

Se a demanda crescer, migre a planilha para SQLite local ou SQL Server Express; o mesmo código ADO adapta-se trocando apenas a connection string. Para boas práticas de desempenho em macros de produção, consulte Boas práticas de desempenho em macros para produção.

Publicação e distribuição dos laudos

Os PDFs gerados caem em pasta \Servidor\Laudos_Esgoto\YYYY-MM\ nomeados como Laudo_Esgoto_<Cliente>_<YYYYMMDD>.pdf. Um script PowerShell agendado (ou rotina VBA com Shell) pode disparar e-mail automático para o cliente com anexo, ou subir para SharePoint/OneDrive com metadados indexáveis. Mantenha cópia do .cdr gerado apenas se houver exigência contratual de arquivo editável; caso contrário, descarte para economizar espaço.

Para versionamento do template, use convenção Template_Visita_Esgoto_v1.2.cdr e registre alterações em CHANGELOG.md na mesma pasta. Assim, qualquer auditoria rastreia qual layout foi usado em cada laudo.

Conclusão prática

Automatizar relatórios de visita técnica de esgoto no CorelDRAW via VBA elimina retrabalho, padroniza a comunicação visual e blinda sua equipe contra erros de digitação em campos críticos. O investimento inicial na estruturação do template e no script paga-se na primeira grande demanda de laudos. Comece hoje mapeando os campos do seu laudo atual e criando o template mestre; o código cresce naturalmente a partir daí. DezJato

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Preciso saber programar para criar essa macro?

Conhecimentos básicos de VBA ajudam, mas o CorelDRAW possui gravador de macros que captura ações manuais. Você pode gravar a criação do layout e depois editar o código para inserir variáveis dinâmicas como data, cliente e medidas.

Como vincular dados de planilhas aos relatórios?

Use ADO ou objetos Excel.Application no VBA para ler planilhas .xlsx ou .csv. Cada linha da planilha pode alimentar um relatório individual, preenchendo campos como endereço, diâmetro da tubulação e observações de forma automatizada.

A macro funciona em versões antigas do CorelDRAW?

Sim, desde a versão X7 a API VBA é estável para manipulação de textos, formas e camadas. Evite recursos exclusivos de versões recentes se precisar de compatibilidade ampla; teste em ambiente homologado antes de implantar.

Posso gerar PDF diretamente da macro?

Sim. O método PublishToPDF do objeto Document permite exportar silenciosamente com configurações de sangria, marcas de corte e resolução. Configure um preset de PDF/X-1a para garantir fidelidade na impressão gráfica.

Como evitar que o CorelDRAW trave durante a geração em lote?

Desative a atualização de tela (Application.Optimization = True) e libere objetos a cada iteração. Processe em lotes de 50 a 100 relatórios, salvando e fechando cada documento antes de abrir o próximo para evitar vazamento de memória.

É possível incluir fotos da inspeção no relatório?

Sim. Use ImportEx para inserir imagens JPG/PNG em camadas específicas. Redimensione proporcionalmente via VBA mantendo a proporção original e aplique máscaras de recorte se necessário para padronizar o visual.