Macros VBA/GMS

Ferramenta para otimizar rotas de hidrojateamento em colunas de São Paulo com VBA

Automatize o planejamento de rotas de hidrojateamento em colunas prediais de SP usando macros VBA no CorelDRAW. Reduza deslocamentos e aumente a eficiência …

Você já perdeu horas reorganizando a ordem de atendimento das colunas no papel, só para descobrir no trânsito que a sequência escolhida fez o caminhão cruzar a Marginal Tietê três vezes no mesmo dia? Esse cenário é comum em equipes de hidrojateamento que atendem a capital paulista, onde a malha viária e as restrições de horário transformam o roteirismo manual em um jogo de adivinhação caro.

A boa notícia é que o CorelDRAW, já presente no fluxo de arte e sinalização de muitas prestadoras, pode virar o motor de roteirização com uma macro VBA bem desenhada. Ao unir a manipulação de vetores do CorelDRAW com algoritmos de caminho mínimo e leitura de planilhas de agendamento, você transforma uma lista caótica de endereços em um mapa vetorial ordenado, colorido por prioridade e pronto para impressão em A3 ou exportação para o tablet do operador.

Por que o CorelDRAW vira central de roteirização

O CorelDRAW não é apenas editor de layout: seu modelo de objetos (Shapes, Layers, Pages) permite desenhar programaticamente cada ponto de parada como um marcador georreferenciado, traçar linhas de deslocamento entre eles e aplicar estilos visuais conforme status (vermelho = emergência, amarelo = preventivo, verde = concluído). Como o VBA roda dentro do próprio aplicativo, não há necessidade de instalar Python, Node.js ou bancos de dados extras — o arquivo .cdr vira o “arquivo de rota” do dia, versionável e auditável.

Além disso, a equipe de design já conhece atalhos, paletas e exportação para PDF/PNG. A curva de adoção cai drasticamente quando a ferramenta aparece como um novo botão “Gerar Rota Hidrojateamento” na aba “Produção” da ribbon, lado a lado com os botões de “Imprimir Etiquetas” e “Exportar Sinalização”.

Estrutura de dados: o que a macro precisa ler

Antes de escrever uma linha de código, defina o contrato de dados. A planilha-mestre (Excel ou CSV) deve conter, no mínimo:

  1. ID_Chamado — chave única para rastreabilidade
  2. Endereco_Completo — rua, número, bairro, CEP
  3. Lat, Long — coordenadas decimais (se não tiver, a macro geocoda via API na primeira execução e cacheia)
  4. Prioridade — 1=Emergência, 2=Urgente, 3=Programado
  5. Janela_Inicio, Janela_Fim — horários permitidos (formato HH:MM)
  6. Tempo_Estimado_Min — duração média do hidrojateamento na coluna
  7. Caminhao_ID — se a frota for fixa por região

A macro lê essa planilha, valida campos obrigatórios, geocoda endereços faltantes e monta uma matriz de distâncias/tempos usando a API do OpenStreetMap (OSRM) ou Google Distance Matrix. Com a matriz em memória, roda um algoritmo de Vehicle Routing Problem with Time Windows (VRPTW) simplificado — nearest neighbor com 2-opt costuma resolver bem para até 30 pontos por veículo.

Fluxo da macro: do clique ao mapa pronto

Sub GerarRotaHidrojateamento()
    Dim ws As Worksheet ' referência via Early Binding ao Excel
    Dim rotas As Collection
    Dim shpMarcador As Shape
    Dim lyrRota As Layer
    Dim i As Long
    
    Set ws = GetPlanilhaAgendamento() ' abre workbook oculto
    If ws Is Nothing Then Exit Sub
    
    ' 1. Carrega dados e geocoda pendentes
    Call CarregarECachearCoordenadas(ws)
    
    ' 2. Calcula matriz de distâncias (OSRM local ou API)
    Dim matrizDist() As Double
    matrizDist = CalcularMatrizOSRM(ws)
    
    ' 3. Resolve VRPTW por caminhão
    Set rotas = ResolverRoteirizacao(matrizDist, ws)
    
    ' 4. Desenha no CorelDRAW
    Set lyrRota = ActiveDocument.Layers.Add("Rota_HJ_" & Format(Date, "yyyymmdd"))
    For Each rota In rotas
        For i = 1 To rota.Pontos.Count
            Set shpMarcador = ActiveDocument.ActiveLayer.CreateEllipse2(...)
            shpMarcador.Fill.UniformColor.RGBAssign RGB(255, 0, 0) ' cor por prioridade
            shpMarcador.Layer = lyrRota
            ' adiciona texto com sequência
        Next i
        ' desenha linhas conectando a sequência
    Next rota
    
    ' 5. Exporta PDF para a equipe de campo
    ActiveDocument.ExportPDF "\\servidor\rotas\Rota_HJ_" & Format(Now, "yyyymmdd_HHnn") & ".pdf"
End Sub

O bloco acima resume o esqueleto: leitura, geocodificação, roteirização, desenho vetorial e exportação. Cada função auxiliar (CarregarECachearCoordenadas, CalcularMatrizOSRM, ResolverRoteirizacao) fica em módulos separados para facilitar testes unitários e manutenção.

Tratando as particularidades de São Paulo

São Paulo impõe restrições que quebram roteirizadores genéricos: rodízio municipal, Zonas de Máxima Restrição de Circulação (ZMRC), faixas exclusivas de ônibus com horários variáveis e ruas sem saída em áreas de favelas onde o caminhão de hidrojateamento não entra. A macro deve:

  • Carregar um shapefile ou GeoJSON das ZMRC e consultar se o ponto cai dentro (point-in-polygon).
  • Ter tabela de rodízio por final de placa e data, impedindo que veículo impedido receba rota naquela data.
  • Permitir “pontos de transferência”: o caminhão deixa o equipamento em base avançada e uma van leve faz o último quilômetro.
  • Incluir tempo de setup/desmobilização (mangueiras, compressor, sinalização) no Tempo_Estimado_Min, não só o jateamento em si.

Essas regras viram constraints no algoritmo de roteirização e camadas visuais no mapa (hachura vermelha sobre ZMRC, ícone de rodízio no canto da página).

Integração com o fluxo de atendimento existente

A maioria das empresas já usa WhatsApp Business, planilha compartilhada no OneDrive/Google Sheets ou um ERP simples. A macro não precisa substituir tudo: ela vira o motor de roteirização acionado por um botão “Atualizar Rota” na planilha (via Office Scripts/Apps Script chamando a macro via COM) ou por um atalho de teclado no CorelDRAW aberto no servidor de arquivos.

Exemplo prático: o despachante recebe chamados até 16h, preenche a planilha mestra, abre o CorelDRAW no terminal de produção, clica “Gerar Rota Hidrojateamento” e, em 15 segundos, tem o PDF do dia seguinte na pasta da equipe de campo. O mesmo PDF sobe para o grupo de WhatsApp com a legenda “Rota HJ 2024-01-15 v1”.

Para aprofundar a automação de relatórios visuais que acompanham essas rotas, veja como Analista de SEO em Pelotas agiliza relatórios visuais com VBA e como Automação VBA aplicada à criação de ativos visuais para projetos estruturam pipelines semelhantes.

Boas práticas de manutenção e evolução

  1. Versionamento do código: guarde os módulos .bas/.cls em repositório Git (GitHub/GitLab) e use export/import do VBE para sincronizar.
  2. Logs estruturados: cada execução grava JSONL em \servidor\logs\rota_hj_yyyymmdd.log com timestamp, qtd_pontos, tempo_calculo_ms, api_status, usuário.
  3. Testes de regressão: mantenha uma planilha “casos_teste.xlsx” com 5 cenários fixos (rodízio, ZMRC, endereço inválido, API offline, 30 pontos) e rode mensalmente.
  4. Documentação viva: um arquivo README.md na pasta da macro explica parâmetros, como adicionar nova restrição e como compilar para 64-bit.
  5. Treinamento rápido: grave um vídeo de 3 minutos mostrando o fluxo “planilha → botão → PDF” e deixe no canal interno da empresa.

Conclusão prática

Transformar o CorelDRAW em ferramenta de roteirização de hidrojateamento elimina a planilha de “achismo” e entrega à equipe de campo um mapa vetorial confiável, colorido por prioridade e respeitando as regras viárias de São Paulo. Comece com um piloto de 10 endereços, valide o tempo real gasto versus o estimado e expanda para a frota toda. Dez Jato pronto atendimento mostra como a operação de campo se beneficia quando o planejamento chega organizado. Para escalar a automação de artes e relatórios que acompanham esse fluxo, confira também Automação no CorelDRAW melhora fluxo de atendimento no Bom Retiro e Automação VBA cria páginas otimizadas em escala para o Google.

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Como o VBA no CorelDRAW consegue otimizar rotas de hidrojateamento?

O VBA acessa dados de endereços e ordens de serviço, calcula a melhor sequência de atendimento usando algoritmos de roteirização e gera mapas vetoriais no CorelDRAW com a rota otimizada pronta para impressão ou envio à equipe de campo.

Preciso de conhecimento avançado em programação para usar essa ferramenta?

Não necessariamente. A ferramenta pode ser entregue como um botão na barra de ferramentas do CorelDRAW, com interface simples de formulário onde o operador apenas cola a lista de endereços e clica em 'Gerar Rota'.

A solução funciona offline ou precisa de internet constante?

O cálculo de rotas puro pode ser feito offline com bibliotecas de grafos, mas para considerar trânsito em tempo real na capital paulista, a integração com APIs de mapas (Google Maps, OpenStreetMap) requer conexão ativa no momento do planejamento.

É possível integrar com planilhas Excel usadas pela equipe de agendamento?

Sim. O VBA lê arquivos .xlsx/.csv diretamente, extrai colunas de endereço, prioridade e janela de atendimento, e escreve de volta a rota ordenada, horários estimados e distância total por veículo/equipe.

Qual o ganho real de tempo comparado ao planejamento manual?

Equipes que adotaram roteirização automatizada relatam redução de 15 a 30% no quilometragem rodada e economia de 1 a 2 horas diárias só no deslocamento entre colunas, além de melhor distribuição de carga entre os caminhões.

A ferramenta gera relatórios visuais para o cliente final ou gestão?

Sim. O CorelDRAW exporta PDFs com mapa da rota, sequência numerada, legendas de prioridade e tempo estimado por ponto, podendo incluir logotipo da empresa e QR code para rastreamento do atendimento.