Nas áreas que acontecem muitos reportes como controladoria, FPA, Faturamento, Contas a Pagar e a Receber, Tesouraria e todos os demais setores financeiros (ciclo de receita) é comum construirmos uma apresentação robusta de resultados com mais de 200 slides e depois termos que individualizá-la por equipe, departamento, grupo e até stakeholder/diretorias. Esse trabalho maçante leva em torno de 02h para fabricar essa divisao (nem comento o tempão todo que demorou para atualizar os números a cada novo fechamento), mais uns 35min (chutando baixo) só conferindo para ver se não deixou nada escapar isso tudo enquanto você entra e sai de inúmeras reuniões e calls rápidas com a equipe para sanar dúvidas ou direcionar o time. Sendo assim, compartilho com vocês uma forma automatizada com Visual Basic Application (VBA) para facilitar a sua tenebrosa atividade mensal em segundos hahaha. Abaixo descreverei como funciona esse código e ao final terás o código genérico pronto para que você coloque as suas regras. Leia com atenção, pois cada detalhe é importante e tenho certeza de que isso poupará muito o seu tempo, meu queridíssimo usuário 😀
1 – Objetivo
Este código VBA é uma macro que automatiza a criação de apresentações em PowerPoint a partir de uma apresentação original. O objetivo é gerar várias apresentações individuais para diferentes equipes, copiando slides específicos da apresentação original.
2 – Entendendo a estrutura e sintaxe do código
A – Declaração de Funções da API:
- O código começa com uma verificação para identificar se ele está sendo executado em uma versão do VBA que suporta 64 bits (VBA7). Isso é importante para garantir a compatibilidade ao usar a função Sleep, que pausa a execução do código por um determinado número de milissegundos.
B – Sub-rotina Principal: CriarApresentacoesRelatorioEquipes
- Essa sub-rotina é o coração do código, onde toda a lógica para criar as apresentações acontece.
C – Declaração de Variáveis:
- pptApp, pptPres, e novoPres: Variáveis que representam a aplicação do PowerPoint e as apresentações.
- slideCount: Armazena o número total de slides na apresentação original.
- equipeNum: Um contador que identifica o número da equipe para as apresentações.
- caminho: O caminho onde as novas apresentações serão salvas (deve ser editado conforme a realidade do usuário).
- startSlide e endSlide: Variáveis que definem quais slides serão copiados para cada nova apresentação.
D – Inicialização do PowerPoint:
- O código cria uma nova instância do PowerPoint e a torna visível.
- Em seguida, abre a apresentação original a partir do caminho especificado (este caminho deve ser editado pelo usuário).
E – Loop para Criar Apresentações:
- Um loop é iniciado para criar 25 apresentações (de 0 a 24):
- Para cada iteração, uma nova apresentação é criada.
- O primeiro slide é copiado da apresentação original.
- Os slides de conteúdo são copiados com base em um intervalo definido pela tabela no código.
- O último slide da apresentação original também é copiado para a nova apresentação.
- A nova apresentação é salva com um nome que inclui o número da equipe (por exemplo, “Equipe1.pptx”).
F – Pausa na Execução:
- Após criar cada apresentação, o código faz uma pausa de 10 segundos para evitar que o PowerPoint seja sobrecarregado.
G – Finalização:
- Depois que todas as apresentações são criadas, a apresentação original é fechada, e o aplicativo PowerPoint é encerrado.
- Por fim, uma mensagem é exibida informando que as apresentações foram criadas com sucesso.
3 – Instruções para o usuário – Onde devo editar?
A – Caminho para a Apresentação Original: no código, você deve substituir caminho = “EDITE PARA A SUA REALIDADE” pelo caminho correto onde a apresentação original está armazenada em sua rede.
B – Salvar Apresentações: o caminho de salvamento das novas apresentações também está definido como caminho. Edite este caminho para um diretório onde você deseja que as novas apresentações sejam salvas.
C – Definindo o Número de Slides: o código está configurado para criar apresentações para 25 equipes. Se você precisar de um número diferente, ajuste o loop (For i = 0 To 24).
D – Slides a Copiar: A parte do código que define os slides a serem copiados é baseada em intervalos fixos. Se a apresentação original mudar, você pode precisar ajustar esses intervalos.
4 – Código generalizado para você utilizar na sua rotina
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub CriarApresentacoesRelatorioEquipes()
Dim pptApp As Object
Dim pptPres As Object
Dim novoPres As Object
Dim slideCount As Integer
Dim equipeNum As Integer
Dim caminho As String
Dim i As Integer
Dim startSlide As Integer
Dim endSlide As Integer
' Inicializa contadores
equipeNum = 1
caminho = "EDITE PARA A SUA REALIDADE" ' Altere para o diretório onde você deseja salvar as apresentações
' Cria uma nova instância do PowerPoint
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True
' Abre a apresentação original
Set pptPres = pptApp.Presentations.Open("EDITE PARA A SUA REALIDADE") ' Altere para o caminho da apresentação original
' Total de slides na apresentação
slideCount = pptPres.Slides.Count
' Loop para criar apresentações conforme a tabela
For i = 0 To 24 ' 25 grupos de slides
' Cria nova apresentação
Set novoPres = pptApp.Presentations.Add
' Copia o Slide 1
pptPres.Slides(1).Copy
novoPres.Slides.Paste
' Define os slides de conteúdo de acordo com a tabela
Select Case i
' Ajuste os intervalos conforme necessário
Case 0: startSlide = 2: endSlide = 10
Case 1: startSlide = 11: endSlide = 19
' (continue para os outros casos...)
Case 24: startSlide = 203: endSlide = 208
End Select
' Copia os slides de conteúdo
Dim j As Integer
For j = startSlide To endSlide
If j <= slideCount Then
pptPres.Slides(j).Copy
novoPres.Slides.Paste
End If
Next j
' Copia o último slide da apresentação
pptPres.Slides(slideCount).Copy
novoPres.Slides.Paste
' Salva a nova apresentação
novoPres.SaveAs caminho & "Equipe" & equipeNum & ".pptx"
novoPres.Close
' Incrementa o número da equipe
equipeNum = equipeNum + 1
' Pausa de 10 segundos
Sleep 10000 ' Pausa em milissegundos
Next i
' Fecha a apresentação original
pptPres.Close
pptApp.Quit
' Libera objetos
Set pptPres = Nothing
Set novoPres = Nothing
Set pptApp = Nothing
MsgBox "Apresentações criadas com sucesso!", vbInformation
End Sub
Essa solução desenvolvida em VBA para o PowerPoint é uma excelente forma de otimizar o processo de criação de apresentações para as equipes. Ao automatizar a geração de slides a partir de uma apresentação original, você poderá economizar tempo e garantir que todos os membros da equipe tenham acesso a informações consistentes e organizadas.
No dia a dia, essa macro pode ser utilizada sempre que houver a necessidade de gerar relatórios ou apresentações para diferentes grupos, permitindo que você se concentre em outras tarefas importantes. Com alguns ajustes simples, como a definição dos caminhos de pasta e a personalização dos slides a serem copiados, todos poderão aproveitar essa ferramenta de forma eficiente e prática.
Incentivamos todos a explorar e utilizar essa solução em suas rotinas, contribuindo para um ambiente de trabalho mais produtivo e colaborativo!
Obrigada
Karen H.

Deixe um comentário