Automatize etiquetas de depilação a laser Vila Olímpia com VBA CorelDRAW
Aprenda a criar macros VBA no CorelDRAW para gerar etiquetas de depilação a laser padronizadas, rastreáveis e prontas para impressão em minutos.
A recepcionista da clínica de estética em Vila Olímpia me mostrou a pilha de etiquetas impressas na noite anterior: nomes cortados, potências trocadas, códigos de barras ilegíveis. Cada erro significava um cliente esperando, um profissional parando o atendimento para conferir manualmente e um retrabalho que consumia horas da equipe. O cenário era clássico — planilha no Excel, template no CorelDRAW, cópia e colagem manual página a página.
A automação com VBA transforma esse fluxo em um único botão. O CorelDRAW expõe todo seu modelo de objetos — páginas, camadas, formas, textos, guidelines — permitindo que uma macro leia a planilha mestra, duplique o template exato para cada registro, preencha campos com precisão milimétrica e envie direto para a impressora com checkpoint de retomada. O resultado: 200 etiquetas padronizadas em minutos, sem erros de digitação e com rastreabilidade total.
Este tutorial mostra o passo a passo completo: da estrutura do template à macro pronta para produção, incluindo tratamento de erros, geração de QR Code e integração com Excel. Você vai sair com um arquivo .gms instalável e o conhecimento para adaptar a qualquer outro produto que exija etiquetas rastreáveis em série.
Estrutura do template: camadas, guidelines e nomes de objetos
A base de toda automação confiável é um template imutável. Crie um documento novo no CorelDRAW com unidade de medida em milímetros (Tools > Options > Document > Rulers). Desenhe o retângulo da etiqueta no tamanho final de corte (ex: 50 x 30 mm) e trave a camada “Corte”. Sobre ela, crie camadas “Texto”, “Codigos” e “Guias”.
Na camada “Guias”, adicione guidelines horizontais e verticais nas margens de segurança (3 mm) e nas posições de cada campo. Use View > Guidelines Setup para travar as guidelines. Agora, para cada campo (cliente, área, potência, sessão, data, profissional), crie um texto artístico (Text > Artistic Text) posicionado exatamente sobre a guideline correspondente. Renomeie cada objeto no Object Manager (F12) com prefixo claro: txtCliente, txtArea, txtPotencia, txtSessao, txtData, txtProfissional. Essa nomenclatura é o que o VBA vai buscar via ActiveLayer.Shapes("txtCliente").Text.Story.Text.
Para o QR Code, crie um retângulo placeholder 12 x 12 mm na camada “Codigos”, nomeie qrPlaceholder. Ele será substituído em tempo de execução por um bitmap gerado via biblioteca externa. Salve o template como etiqueta_depilacao_master.cdr em pasta de rede acessível (ex: \servidor\templates\).
Planilha mestra: colunas, validação e versão
A planilha é a fonte única da verdade. Crie dados_etiquetas.xlsx com a primeira linha exatamente assim:
| Cliente | Area | Potencia | Sessao | Data | Profissional | QRData |
|---|---|---|---|---|---|---|
| Maria Silva | Axila | 18J | 3 | 2024-03-15 | Ana | DEP |
| João Santos | Perna | 22J | 1 | 2024-03-15 | Carlos | DEP |
A coluna QRData concatena os campos essenciais para o código de barras bidimensional. Use validação de dados (Data > Data Validation) nas colunas Area (lista: Axila, Perna, Virilha, Rosto, Buço) e Potencia (lista: 12J, 14J, 16J, 18J, 20J, 22J) para evitar typos que quebrariam a macro. Proteja a planilha (Review > Protect Sheet) permitindo apenas edição nas células de dados.
Guarde a planilha na mesma pasta do template. Adicione uma aba “Controle” com célula B1 guardando o índice da última linha processada com sucesso — esse será o checkpoint de retomada.
Macro VBA: leitura, loop, preenchimento e impressão
Abra o CorelDRAW, pressione Alt+F11, insira um módulo padrão (Insert > Module) e cole o código abaixo. Comentários explicam cada bloco.
Option Explicit
Sub GerarEtiquetasDepilacao()
Dim xlApp As Object, xlWb As Object, xlWs As Object
Dim cdrDoc As Document, cdrPage As Page
Dim shp As Shape, i As Long, lastRow As Long
Dim checkpoint As Long, qrPath As String
Dim logFile As Long
' --- Configurações ---
Const TEMPLATE_PATH = "\\servidor\templates\etiqueta_depilacao_master.cdr"
Const EXCEL_PATH = "\\servidor\templates\dados_etiquetas.xlsx"
Const LOG_PATH = "\\servidor\logs\etiquetas_log_" & Format(Date, "yyyymmdd") & ".txt"
' --- Checkpoint de retomada ---
logFile = FreeFile
Open LOG_PATH For Append As #logFile
Print #logFile, "Início: " & Now
Close #logFile
' --- Abre Excel ---
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlWb = xlApp.Workbooks.Open(EXCEL_PATH)
Set xlWs = xlWb.Sheets("Dados")
' Lê checkpoint da aba Controle
checkpoint = xlWb.Sheets("Controle").Range("B1").Value
If checkpoint = 0 Then checkpoint = 1
' Última linha com dados
lastRow = xlWs.Cells(xlWs.Rows.Count, "A").End(-4162).Row ' xlUp
' --- Abre template CorelDRAW ---
Set cdrDoc = OpenDocument(TEMPLATE_PATH)
Application.Optimization = True
Application.ScreenUpdating = False
For i = checkpoint To lastRow
If Trim(xlWs.Cells(i, 1).Value) = "" Then GoTo Proximo
' Duplica página mestre (página 1)
cdrDoc.Pages(1).Duplicate
Set cdrPage = cdrDoc.Pages(cdrDoc.Pages.Count)
cdrPage.Activate
' Preenche textos
With cdrPage.Layers("Texto")
.Shapes("txtCliente").Text.Story.Text = xlWs.Cells(i, 1).Value
.Shapes("txtArea").Text.Story.Text = xlWs.Cells(i, 2).Value
.Shapes("txtPotencia").Text.Story.Text = xlWs.Cells(i, 3).Value
.Shapes("txtSessao").Text.Story.Text = "Sessão " & xlWs.Cells(i, 4).Value
.Shapes("txtData").Text.Story.Text = Format(xlWs.Cells(i, 5).Value, "dd/mm/yyyy")
.Shapes("txtProfissional").Text.Story.Text = xlWs.Cells(i, 6).Value
End With
' Gera QR Code via linha de comando (ZXing)
qrPath = Environ("TEMP") & "\qr_" & i & ".png"
Shell "cmd /c zxing encode -f PNG -w 12 -h 12 -o " & qrPath & " "" & xlWs.Cells(i, 7).Value & """, vbHide
Do While Dir(qrPath) = "": DoEvents: Loop
' Substitui placeholder por bitmap
With cdrPage.Layers("Codigos")
.Shapes("qrPlaceholder").Delete
.ImportBitmap qrPath
.Shapes(.Shapes.Count).Name = "qrCode"
.Shapes("qrCode").SetSize 12, 12 ' mm
End With
' Checkpoint: grava linha processada
xlWb.Sheets("Controle").Range("B1").Value = i + 1
xlWb.Save
logFile = FreeFile
Open LOG_PATH For Append As #logFile
Print #logFile, "OK linha " & i & " - " & xlWs.Cells(i, 1).Value
Close #logFile
Proximo:
Next i
' Imprime todas as páginas exceto a mestre (página 1)
If cdrDoc.Pages.Count > 1 Then
cdrDoc.PrintOut Range:=cdrPrintRangePages, FromPage:=2, ToPage:=cdrDoc.Pages.Count
End If
Application.ScreenUpdating = True
Application.Optimization = False
xlWb.Close SaveChanges:=True
xlApp.Quit
logFile = FreeFile
Open LOG_PATH For Append As #logFile
Print #logFile, "Fim: " & Now & " - Total: " & (cdrDoc.Pages.Count - 1) & " etiquetas"
Close #logFile
MsgBox "Etiquetas geradas e enviadas para impressão: " & (cdrDoc.Pages.Count - 1), vbInformation
End Sub
Pontos críticos do código:
Application.Optimization = TrueeScreenUpdating = Falsedesligam redraw — ganho de 10x em lotes grandes.- Checkpoint na aba “Controle” permite retomar exatamente onde parou após travamento de impressora.
- Log em arquivo texto cria trilha de auditoria para conferência posterior.
- QR Code gerado via ZXing (instale via Chocolatey:
choco install zxing) evita dependência de DLLs registradas.
Tratamento de erros robusto e retomada automática
Produção real exige resiliência. Envolva o loop principal em estrutura de erro:
On Error GoTo ErroLinha
' ... código do loop ...
Proximo:
Resume Next
ErroLinha:
logFile = FreeFile
Open LOG_PATH For Append As #logFile
Print #logFile, "ERRO linha " & i & ": " & Err.Description
Close #logFile
Resume Proximo
Se a impressora travar na página 147, o log mostra “ERRO linha 147: Print spooler error”. Ao reexecutar a macro, ela lê checkpoint = 148 da aba Controle e continua dali. Nenhuma etiqueta duplicada, nenhuma perdida.
Teste o cenário de falha: pause a impressora propositalmente no meio do lote, cancele a macro, solte a impressora e rode novamente. Confira o log e a contagem final.
Integração com fluxo da clínica: do agendamento à etiqueta
A automação não vive isolada. O time de frente de caixa usa sistema de agendamento que exporta CSV diário. Um script PowerShell (agendado no Windows Task Scheduler às 6h) transforma esse CSV no dados_etiquetas.xlsx com as validações e concatenação do QRData. Às 7h, o operador abre o CorelDRAW, clica no botão “Gerar Etiquetas Dia” (adicionado via Tools > Customization > Commands > Macros) e retira as etiquetas da impressora térmica já cortadas.
Para clínicas que oferecem também depilação a laser em Vila Olímpia, o mesmo template serve ajustando apenas a lista de áreas na validação da planilha. A macro lê a coluna Area e não precisa de alteração no código.
Se a equipe trabalha em MacBook com CorelDRAW via Parallels, veja como configurar o ambiente Windows virtualizado para macros e rotinas de manutenção que evitam paradas.
Boas práticas de desempenho e manutenção
- Desative eventos:
Application.EventsEnabled = Falseno início,Trueno fim. - Use
With/End Withem cascata para acessar camadas e shapes — evita resolução repetida de objetos. - Evite
SelecteActivate— trabalhe direto com referências (Set shp = ...). - Libere objetos:
Set xlApp = Nothing,Set cdrDoc = Nothingao final. - Versione o .gms: exporte o módulo (File > Export > Macro Library) como
EtiquetasDepilacao_v1.2.gmscom data no nome. - Documente no header do módulo: autor, data, versão, dependências (ZXing, Excel 16.0 Object Library).
Para aprofundar em performance, leia boas práticas de desempenho em macros para produção.
Conclusão prática
Com template padronizado, planilha validada e macro com checkpoint, a clínica eliminou retrabalho, ganhou rastreabilidade e liberou a equipe para atendimento. O mesmo padrão se aplica a etiquetas de produtos, fichas de anamnese, protocolos visuais ou qualquer série gráfica que exija precisão e repetibilidade. Instale o .gms, treine um operador-chave e meça o tempo ganho na primeira semana — o ROI aparece no primeiro lote.
Para expandir a automação para outros materiais da clínica, veja como criar macros do zero e como publicar suas macros no gerenciador de extensões.
Checklist prático
Perguntas frequentes
Preciso saber programar para criar macros no CorelDRAW?
Não é obrigatório ser programador. O CorelDRAW possui gravador de macros que captura ações manuais e gera código VBA inicial. Com conhecimentos básicos de lógica e variáveis, você adapta o código gravado para loops, leitura de planilhas e impressão em lote.
Como vincular dados de clientes do Excel às etiquetas no CorelDRAW?
Use o objeto Excel.Application no VBA para abrir a planilha, ler linhas com nome, área, potência, sessão e data, e preencher campos de texto (Text.Story) nas formas do template. Cada iteração cria uma página ou duplica o grupo de objetos, mantendo posicionamento exato.
Qual a melhor forma de garantir alinhamento milimétrico na impressão?
Defina unidades do documento em milímetros, use guidelines e snap-to-guides no template, e posicione objetos via propriedades X/Y no código. Evite arrastar com mouse; calcule posições a partir de margens fixas e use ActiveLayer.CreateGuideline para referências temporárias se necessário.
Posso gerar código de barras ou QR Code nas etiquetas via VBA?
Sim. Integre bibliotecas gratuitas como ZXing via linha de comando ou use fontes de código de barras (Code 128) instaladas no Windows. No VBA, gere a string codificada, aplique a fonte ao texto e ajuste tamanho. Para QR Code, chame API local ou DLL que retorne bitmap e importe com ActiveLayer.ImportBitmap.
Como evitar erros quando a impressora trava no meio do lote?
Implemente checkpoint: grave em log (arquivo de texto ou planilha) o índice da última etiqueta impressa com sucesso. No início da macro, leia o log e retome a partir do próximo registro. Use Application.PrintOut com Range para reimprimir apenas páginas faltantes.
A macro funciona no CorelDRAW rodando no Mac via Parallels?
Sim, desde que o Windows virtualizado tenha acesso à impressora e ao Excel. O VBA roda nativamente no host Windows. Ajuste caminhos de arquivo (use variáveis de ambiente %USERPROFILE%) e teste drivers de impressora no modo bridged para evitar problemas de spool.