Última atualização: junho de 2020
Aplicável a: Office 2019 e anteriores. Apenas Windows.
Segue a pergunta de um leitor:
Como parte da apresentação do meu relatório trimestral à administração, muitas vezes preciso copiar vários slides de informações gerais de outras apresentações. Não é grande coisa, mas seria uma economia significativa poder automatizar este exercício. Qualquer ajuda de macro VBA para conseguir isso é apreciada!
Como você acabou de mencionar, você pode automatizar a cópia e colagem de slides no PowerPoint usando o Visual Basic for Applications. Se você precisar criar várias apresentações todos os meses, essa automação de cópia / importação de slides pode se tornar uma grande economia de tempo!
PowerPoint VBA para adicionar slides
Vamos começar com este exercício simples.
Primeiro, certifique-se de que sua guia de desenvolvimento esteja habilitada e visível. Aqui está como fazer isso .
Presumo que você já tenha criado uma apresentação habilitada para Macro (o tipo de arquivo é .pptm), que você colocou no mesmo diretório que sua apresentação de origem (a qual me referirei como source.pptm). Veja como criar uma apresentação do PowerPoint com VBA .
Primeiramente, vamos fazer um backup dessa apresentação (copie e salve).
Então vamos em frente e insira a seguinte Macro em um novo módulo VBA em sua apresentação de destino. Todos os detalhes sobre como fazer isso podem ser encontrados em nosso tutorial do PowerPoint VBA .
Aqui está o código VBA que você precisará para copiar e colar automaticamente os slides.
Algumas suposições que fiz:
- Sua apresentação de origem é denominada source.pptm
- Você colará os slides 2-4 da sua apresentação de origem
- Você colocará os slides copiados começando no slide 5.
Sub InsertFromOtherPres()
' This short VBA macro copies slides from one presentation and inserts them into another
ActivePresentation.Slides.InsertFromFile FileName:="source.pptm", Index:=1, SlideStart:=2,
SlideEnd:=4
End Sub
Obviamente, sinta-se à vontade para alterar a indexação do número do slide no código para que eles se ajustem aos seus requisitos.
Você pode fazê-lo percorrer várias apresentações e inserir slides específicos de cada um em seu relatório de gerenciamento.
PowerPoint VBA para duplicar slides
Em vez de copiar slides para outra apresentação, você pode clonar um ou mais slides em sua apresentação:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Esses foram apenas alguns exemplos simples de automação do PowerPoint. Leitores que procuram perguntas específicas, sintam-se à vontade para enviar uma pergunta através da página de contato.
Espero que ajude 🙂
Preservar a formatação ao copiar slides
O problema com o exemplo anterior foi que a formatação do tema das apresentações originais não foi copiada. Suponha que as 2 planilhas tivessem formatação diferente, isso é o que teria acontecido:
Exemplo 1
|
Sub main()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open( "C:\2.pptx" )
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Next i
objPresentation.Close
End Sub
|

Esta é a apresentação com o slide que queremos copiar:
Resultado:
Para contornar esse problema você poderia usar o código abaixo:


|
Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open( "C:\2.pptx" )
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub
|
Além de copiar o slide, o código acima copia o design. Se você quisesse fazer isso manualmente, copiaria o slidemaster para a nova apresentação. Você não pode copiar o slidemaster usando VBA, mas pode definir a propriedade de design dos slides.