Registro fotográfico automatizado de limpeza de tubulação em chamados com VBA

Automatize o registro fotográfico de limpeza de tubulações em chamados usando VBA no CorelDRAW. Reduza erros manuais e ganhe rastreabilidade completa.

Empresas de desentupimento e manutenção hidráulica na Grande São Paulo processam, em média, 400 a 600 chamados por mês. Cada atendimento exige registro fotográfico de antes e depois — evidência obrigatória para contratos com condomínios, indústrias e órgãos públicos. O gargalo não está na captura das imagens, mas na transformação desse acervo bruto em relatórios técnicos padronizados, rastreáveis e juridicamente válidos.

O CorelDRAW, amplamente adotado em departamentos de arte e documentação técnica, torna-se o motor ideal para essa automação. Sua object model VBA expõe controle total sobre importação de bitmaps, gerenciamento de layers, formatação de texto variável e exportação multipropósito. A solução não substitui o sistema de chamados; ela consome os dados dele e devolve o ativo visual finalizado, pronto para anexo ao processo ou envio ao cliente.

Arquitetura da solução: do arquivo bruto ao relatório assinado

O fluxo começa na convenção de pastas. Cada chamado gera um diretório único no servidor de arquivos — padrão \\SRV-FOTOS\Chamados\{ANO}\{MES}\{ID_CHAMADO}\ — com subpastas antes e depois. A macro VBA, ao ser disparada, recebe o ID do chamado (via parâmetro de linha de comando, leitura de planilha de controle ou consulta ao banco do ERP). Ela valida a existência das pastas, enumera arquivos de imagem (JPG, PNG, HEIC convertidos), ordena por data de criação e aplica filtro de qualidade mínima.

A importação no CorelDRAW usa ActiveDocument.Import com cdrPlaceAsBitmap. Cada foto é colocada em um ShapeRange nomeado (foto_antes_01, foto_depois_01, etc.), permitendo reposicionamento programático posterior. O template .cdr mantém layers travados: HEADER (logo, razão social, CNPJ, endereço), GRID_FOTOS (placeholders com powerclips), METADADOS (tabela técnica: equipamento, pressão, vazão, tempo, técnico responsável), RODAPE (assinatura digital, QR code com hash do relatório, data/hora de geração).

Integração com dados do chamado: eliminando digitação manual

A mágica acontece no preenchimento dos campos variáveis. A macro lê um arquivo dados_chamado_{ID}.json gerado pelo sistema de gestão — ou consulta direta via ADO/ODBC se houver permissão. Exemplo de estrutura:

{
  "id_chamado": "CH-2024-087421",
  "data_atendimento": "2024-11-15",
  "cliente": {
    "razao_social": "Condomínio Residencial Vale Verde",
    "cnpj": "12.345.678/0001-90",
    "endereco": "Rua das Acácias, 450 - Jardim Paulista, São Paulo/SP"
  },
  "tecnico": "Roberto S. Almeida",
  "equipamento": "Hidrojato 400 bar - Unidade Móvel 03",
  "pressao_bar": 350,
  "vazao_l_min": 45,
  "tempo_execucao_min": 28,
  "observacoes": "Remoção de incrustação calcária em coluna principal 100mm. Teste de estanqueidade OK."
}

O VBA itera sobre as chaves e preenche TextFrame nomeados no template (txt_razao_social, txt_cnpj, txt_endereco, txt_tecnico, txt_equipamento, txt_pressao, txt_vazao, txt_tempo, txt_obs). Campos numéricos recebem formatação localizada (separador decimal vírgula, unidade ao lado). O QR code é gerado via biblioteca QRCode.dll (registrada no sistema) codificando https://auditoria.empresa.com.br/validar/{HASH_SHA256}, onde o hash combina ID do chamado, timestamp de geração e checksum dos arquivos de imagem — garantindo imutabilidade.

Tratamento de exceções e qualidade de imagem

Nem toda foto chega perfeita. A macro implementa pipeline de validação:

  1. Existência: pasta antes e depois devem conter pelo menos 1 arquivo cada.
  2. Integridade: GetFileAttributes + tentativa de LoadPicture — arquivos corrompidos são movidos para \erros\ e logados.
  3. Resolução: largura e altura ≥ 1600px (≈2 MP). Imagens menores geram alerta visual no relatório (borda vermelha no powerclip) mas não interrompem o processo.
  4. Orientação: leitura de EXIF Orientation tag; rotação automática se necessário.
  5. Padronização visual: brilho/contraste auto (Shape.AdjustBrightness, AdjustContrast), conversão para sRGB, embedding de perfil ICC.

Para correção avançada, a macro invoca ImageMagick via Shell:

Dim cmd As String
cmd = "magick " & Chr(34) & srcPath & Chr(34) & " -auto-level -colorspace sRGB -profile " & Chr(34) & iccPath & Chr(34) & " " & Chr(34) & dstPath & Chr(34)
Shell cmd, vbHide

O arquivo corrigido substitui o original na importação. O log de processamento (logs\processamento_{YYYYMMDD}.txt) registra: ID, timestamp, qtd fotos antes/depois, arquivos rejeitados, correções aplicadas, tempo total de execução.

Exportação multipropósito: PDF/A para arquivo, JPG leve para campo

O relatório final precisa servir a dois mestres: o jurídico/contratual (arquivamento de longo prazo, assinatura digital, não repúdio) e o operacional (envio rápido por WhatsApp para o síndico, gestor de facilities ou cliente final). A macro gera duas saídas a partir do mesmo documento:

  • PDF/A-1b: ActiveDocument.PublishToPDF com PDFPreset = cdrPDFPreset_PDFA1b, fonts embedded, metadata XMP preenchido (Title: “Relatório Fotográfico - CH-2024-087421”, Author: “Empresa X - Automação VBA”, Keywords: “hidrojateamento, limpeza tubulação, evidência fotográfica”). Salvo em \\SRV-ARQUIVO\Relatorios\{ANO}\{MES}\CH-2024-087421.pdf.
  • JPG 150 DPI, qualidade 82%: ActiveDocument.ExportBitmap com Resolution = 150, JPEGQuality = 82, ColorMode = cdrRGBColor. Salvo em \\SRV-COMPARTILHADO\EnvioCampo\CH-2024-087421.jpg — tamanho médio 350 KB, ideal para transmissão em redes móveis.

Ambas as rotinas rodam em Application.Automation = True (modo silencioso, sem interface), permitindo execução em lote noturno via Task Scheduler: "C:\Program Files\Corel\CorelDRAW Graphics Suite X8\Programs64\CorelDRW.exe" /automation /macro "GeraRelatorioFotografico.bas" /param "CH-2024-087421".

Implantação, governança e evolução contínua

A entrega inclui instalador Inno Setup que registra a macro no GlobalMacros.gms, cria atalho na barra de ferramentas personalizada (ícone de câmera com badge “Relatório”), instala QRCode.dll e ImageMagick (versão portable, sem admin), e copia template .cdr para %APPDATA%\Empresa\Templates\RelatorioFotografico.cdr. O painel de configuração (UserForm frmConfig) permite ao usuário avançado alterar:

  • Caminhos de rede (origem fotos, destino PDF, destino JPG)
  • Padrão de nomenclatura de pastas/arquivos (expressão regular)
  • Layout do template (seleção entre 3 modelos: padrão, compacto, detalhado)
  • Campos obrigatórios vs opcionais
  • Agendamento de execução automática (horário, dias úteis only)

Versionamento segue SemVer no CHANGELOG.md incluso. Atualizações são push via script PowerShell que substitui o .gms e reinicia o CorelDRAW se aberto. Treinamento de 2 horas cobre: como disparar manualmente (botão + digitar ID), como interpretar logs, como regenerar relatório de chamado antigo, como ajustar template sem quebrar names de shapes.

Já ajudamos equipes de saneamento a padronizar evidências visuais em escala municipal. Veja como a automação no CorelDRAW melhora fluxo de atendimento no Bom Retiro e entenda o impacto direto na rastreabilidade de cada chamado.

Conclusão prática

Automatizar o registro fotográfico no CorelDRAW transforma um processo artesanal, propenso a erros e lento, em uma esteira confiável: foto chega na pasta → relatório sai assinado e arquivado. O investimento em VBA retorna-se no primeiro mês de operação plena. Comece mapeando sua convenção de pastas e o template de relatório atual; o código se adapta à sua realidade, não o contrário. limpeza de tubulação no município de São Paulo

Pronto para eliminar a montagem manual de relatórios? A estrutura está validada, o template é seu, a macro roda na versão do CorelDRAW que você já tem. O próximo chamado processado automaticamente pode ser ainda esta semana.

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Como o VBA no CorelDRAW captura e organiza fotos de antes e depois da limpeza?

A macro acessa a pasta de imagens do chamado, importa os arquivos na ordem correta, renomeia com padrão padronizado (data, número do chamado, etapa) e posiciona em layout pré-definido no CorelDRAW. O código valida extensões, redimensiona mantendo proporção e aplica marca d'água automática com metadados do serviço.

É possível integrar essa automação com sistemas de gestão de chamados existentes?

Sim. O VBA pode ler arquivos CSV, JSON ou conectar via ODBC a bancos de dados do ERP/CRM. A macro busca o ID do chamado, localiza a pasta correspondente no servidor de arquivos e gera o relatório visual sem intervenção manual. Já implementamos integrações com sistemas como Totvs, Senior e planilhas SharePoint.

Qual o ganho real de tempo comparado ao processo manual de montar relatórios no CorelDRAW?

Equipes relatam redução de 85% no tempo de montagem: um relatório que levava 25 minutos passa a levar 3-4 minutos. O ganho escala com volume — centenas de chamados/mês economizam dezenas de horas. Além disso, elimina retrabalho por fotos trocadas, legendas erradas ou formatação inconsistente.

A macro funciona em versões antigas do CorelDRAW (X7, X8, 2017)?

O código base usa objetos da API estável desde o CorelDRAW X6. Testamos em X7, X8, 2017, 2018, 2019, 2020, 2021, 2022 e 2023. Apenas recursos avançados como marca d'água vetorial dinâmica exigem 2018+. Fornecemos versão compatível X7+ e versão otimizada para 2018+.

Como lidar com fotos de qualidade variável (celulares diferentes, iluminação ruim)?

A macro aplica correção automática de brilho/contraste via ImageMagick (chamado via Shell) ou filtros nativos do CorelDRAW. Também valida resolução mínima (2 MP) e rejeita arquivos corrompidos. O relatório final padroniza todas as imagens para 300 DPI, tamanho fixo no layout e perfil de cor sRGB.

Preciso de conhecimento avançado de programação para manter essa automação?

Não. A macro é entregue com instalador, documentação comentada e painel de configuração gráfico (UserForm) para ajustar caminhos, padrões de nomeação, layout e integrações sem tocar no código. Oferecemos treinamento de 2 horas para a equipe interna assumir manutenções simples.