,

Como Automatizar e Separar suas Apresentações em PowerPoint com VBA por Setor, Equipe, Grupo e etc.

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

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.