Automatize placas de sinalização de área de desentupimento em Suzano via VBA para CorelDRAW
Aprenda a criar macros VBA no CorelDRAW para gerar placas de sinalização padronizadas de áreas de desentupimento em Suzano com rapidez e precisão.
Mais de 60% do tempo de produção gráfica em sinalização técnica é gasto em tarefas repetitivas: duplicar páginas, trocar textos, conferir alinhamento. No segmento de desentupimento, onde cada ordem de serviço exige placa específica para a área de intervenção, a automação via VBA no CorelDRAW transforma horas de trabalho manual em minutos de processamento em lote.
Em Suzano, a demanda por placas padronizadas — contendo número da O.S., endereço completo, tipo de obstrução, data de execução e responsável técnico — cresce junto com a frota de caminhões de hidrojateamento. Uma macro bem estruturada elimina erros de digitação, garante conformidade visual com a NR-26 e libera o designer para focar em layout e aprovação final.
Estrutura do template mestre no CorelDRAW
Antes de escrever qualquer linha de código, prepare o documento base. Crie um arquivo .cdr com página no tamanho final da placa (ex.: 400 mm × 300 mm) e organize em camadas:
- Camada FIXA (travada): logotipo da empresa, bordas, símbolos normativos (setas, pictogramas de esgoto), fundo colorido.
- Camada VARIÁVEL (editável): caixas de texto paragráfico para cada campo dinâmico, nomeadas via
Nome da formano painel Propriedades (ex.:txtOS,txtEndereco,txtTipoServico,txtData,txtResponsavel). - Camada CORTE (não imprime): marcas de sangria e corte, linha de dobra se houver.
Salve como template_placa_suzano.cdr em pasta de rede acessível. A macro abrirá este template, clonará a página para cada registro e preencherá apenas a camada VARIÁVEL.
Leitura de dados: Excel como fonte intermediária
O sistema de ordens de serviço exporta CSV ou Excel. No VBA, use ADO para ler a planilha sem abri-la, o que é mais rápido e evita conflitos de arquivo aberto. Exemplo de conexão:
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & caminhoArquivo & ";Extended Properties='Excel 12.0 Xml;HDR=YES;'"
Set rs = cn.Execute("SELECT * FROM [Plan1$] WHERE Cidade = 'Suzano'")
Itere o Recordset com Do While Not rs.EOF. A cada linha, clone a página do template, localize as formas pelo nome (ActivePage.FindShapeRange) e atualize .Text.Story.Text com os valores do registro.
Geração em lote com controle de qualidade
Dentro do loop, aplique estas práticas:
ActiveDocument.Unit = cdrMillimeterpara garantir coordenadas em mm.- Use
Shape.Duplicate+Layer.Activatepara manter a camada FIXA intocada. - Após preencher textos, force
Shape.Text.Story.Refreshe verifiqueShape.Text.Widthvs. largura da caixa — se estourar, reduza fonte ou quebre linha automaticamente. - Adicione numeração de página no rodapé:
Página X de YusandoActiveDocument.Pages.Count. - Salve o arquivo final como PDF/X-1a pronto para impressão:
ActiveDocument.PublishToPDF.
Uma tabela de referência rápida para campos e validações:
| Campo | Origem | Validação | Formatação |
|---|---|---|---|
| O.S. | Coluna A | Numérico, 6 dígitos | "OS-" & Format(rs("OS"), "000000") |
| Endereço | Coluna B + C | Não vazio, máx. 60 chars | Left(rs("Endereco") & " " & rs("Numero"), 60) |
| Tipo Serviço | Coluna D | Lista: Hidrojateamento, Mecânico, Inspeção | UCase(rs("Tipo")) |
| Data | Coluna E | Data válida, ≥ hoje | Format(rs("Data"), "dd/mm/yyyy") |
| Responsável | Coluna F | Não vazio | StrConv(rs("Resp"), vbProperCase) |
Tratamento de exceções e logs
Envolva o loop principal em On Error Resume Next + verificação de Err.Number a cada iteração. Grave falhas em arquivo de log (Open caminhoLog For Append As #1) com timestamp, número da O.S. e descrição do erro. Isso permite reprocessar apenas as falhas sem regenerar todo o lote.
Para fontes, prefira converter textos fixos em curvas (Shape.ConvertToCurves) no template. Nos campos variáveis, use fontes padrão do Windows (Arial, Tahoma) ou embarque a fonte via ActiveDocument.EmbedFonts = True ao exportar PDF.
Integração com o fluxo de produção
Publique a macro como extensão (.gms) e adicione botão na barra de ferramentas via Tools > Customization > Commands > Macros. O operador clica, seleciona o arquivo Excel do dia, confirma pasta de saída e a macro roda em segundo plano. Ao final, exibe MsgBox com resumo: “Geradas 47 placas. 2 falhas — ver log.txt”.
Essa abordagem já é usada em rotinas similares, como a automação de etiquetas de depilação a laser na Vila Olímpia e a separação de cores para serigrafia, onde a padronização de entrada e saída garante previsibilidade.
Para equipes que rodam macros em máquinas virtuais ou MacBooks com Parallels, revise as boas práticas de desempenho em macros para produção a fim de evitar travamentos em lotes grandes.
vaso sanitário entupido o que fazer
Com o template validado, a macro testada e o botão na barra, a geração de placas para Suzano passa de tarefa de horas para rotina de minutos. O ganho real não é só velocidade — é a eliminação de retrabalho por erro humano e a garantia de que toda placa na rua carrega a identidade visual correta e os dados certos da ordem de serviço.
Checklist prático
Perguntas frequentes
Preciso saber programação avançada para criar essas macros?
Não. O VBA do CorelDRAW possui gravador de macros que captura ações manuais, permitindo que você adapte o código gerado com conhecimentos básicos de lógica de programação e manipulação de objetos.
Como garantir que as placas atendam às normas de sinalização de segurança?
Inclua no template as cores, símbolos e textos exigidos pela NR-26 e ABNT NBR 13434. A macro apenas replica o layout aprovado, então a conformidade depende do modelo mestre validado pelo responsável técnico.
A macro funciona em versões antigas do CorelDRAW?
Sim, desde que a versão suporte VBA (CorelDRAW X7 ou superior). Evite usar propriedades ou métodos introduzidos em versões recentes se precisar de compatibilidade ampla.
Posso gerar dezenas de placas com numeração sequencial automaticamente?
Sim. Use um loop `For` ou `Do While` lendo dados de uma planilha Excel ou arquivo CSV. Cada iteração cria uma página, preenche os campos variáveis (número, local, data) e aplica o estilo padrão.
Como evitar erros de fonte ou cor ao rodar a macro em outro computador?
Converta textos em curvas nos elementos fixos ou embarque as fontes no documento. Para cores, use paletas CMYK ou spot definidas no arquivo, não dependendo de perfis de cor do sistema operacional.
É possível integrar a macro com um banco de dados de ordens de serviço?
Sim, via ADO ou ODBC no VBA. A macro pode consultar o banco, filtrar O.S. de Suzano e gerar as placas correspondentes em lote, eliminando digitação manual e erros de transcrição.