Este é um guia completo para automatizar o PowerPoint usando macros VBA (Visual Basic for Applications). Abaixo você encontrará muitos exemplos úteis.
VBA PDF (downloads gratuitos)
Baixe nosso Tutorial VBA do Microsoft PowerPoint grátis! Ou Tutoriais VBA para outros programas do Office!
Download
Tutorial do PowerPoint VBA (macros)
Salvar como apresentação habilitada para macro
A apresentação com código VBA deve ser ‘salva como’ apresentação habilitada para macro do PowerPoint (* .pptm)
Ative a guia ‘Desenvolvedor’ na faixa de opções
Você deve habilitar a guia Desenvolvedor na Faixa de Opções antes de criar o código VBA. Para fazer isso, escolha Arquivo -> Opções e clique em ‘Personalizar Faixa de Opções’ e marque a caixa ao lado da guia ‘Desenvolvedor’ no painel direito.
Criar macro do PowerPoint
Este é um exemplo simples de uma macro VBA do PowerPoint:
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Salvar PowerPoint como PDFpptName = ActivePresentation.FullName'Substitua a extensão do arquivo PowerPoint no nome para PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Ele salva a apresentação ativa como um PDF. Cada linha de código faz o seguinte:
- Cria variáveis para o nome do PowerPoint e o nome do PDF
- Atribui o nome da apresentação ativa à variável pptName
- Cria o nome completo do PDF
- Salva a apresentação como PDF
Aplicativo PowerPoint
Quando o código VBA está sendo executado em uma apresentação do PowerPoint, o aplicativo do PowerPoint é o aplicativo padrão e pode ser manipulado sem referência explícita. Crie uma nova apresentação
Para criar uma apresentação, use o método Add do aplicativo PowerPoint.
123 | Application.Presentations.Add'ou sem referência explícitaPresentations.Add |
Abra uma nova apresentação
Para abrir uma apresentação nova e em branco, use o método Add da coleção Application.Presentations
1 | Presentations.Add |
Abra uma apresentação existente
Para abrir uma apresentação que você já criou, use o método Open da coleção Application.Presentations
1 | Presentations.Open ("My Presentation.pptx") |
O código acima pressupõe que a apresentação esteja no mesmo diretório que a apresentação do PowerPoint que contém o código.
Abrir e atribuir a uma variável
Você deve atribuir a apresentação aberta a uma variável para que possa manipulá-la de acordo com seus requisitos.
12 | Dim ppt como apresentaçãoSet ppt = Presentations.Open ("My Presentation.pptx") |
Consulte a apresentação ativa
Use a referência ActivePrentation para manipular a apresentação ativa na GUI quando o código VBA for executado.
12 | 'Imprime o nome do ActivePresentation na janela imediataDebug.Print ActivePresentation.Name |
Salvar apresentação atual
A declaração abaixo salvará a Apresentação Ativa se ela foi salva antes. Se não tiver sido salvo, será exibida a caixa de diálogo ‘Salvar como’.
1 | ActivePresentation.Save |
Fechar apresentação atual
A declaração abaixo fechará a Apresentação Ativa mesmo que ela não tenha sido salva após a última edição.
1 | ActivePresentation.Close |
Referências úteis
Atribuir Apresentação Existente (por nome) à Variável
12 | Dim myPresentationByName As PresentationDefinir myPresentationByName = Application.Presentations ("Minha apresentação") |
Atribuir slide ativo à variável
12 | Dim currentSlide As SlideDefinir currentSlide = Application.ActiveWindow.View.Slide |
Atribuir slide por índice à variável
12 | Dim mySlide As SlideDefina mySlide = ActivePresentation.Slides (11) |
Contar o número de slides
12 | Dim slideCount como longoslideCount = ActivePresentation.Slides.Count |
Obter o número do índice do slide atual
12 | Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Adicionar um slide em branco ao final da apresentação de slides
1234567 | Dim slideCount como longoDim newSlide as SlideslideCount = ActivePresentation.Slides.CountSet newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'ou como ppLayoutBlank = 12Set newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Adicionar um slide após o slide atual
12345 | Dim newSlide As SlideDim currentSlideIndex como InteirocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexDefinir newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Excluir um slide
1234 | Dim currentSlideIndex como InteirocurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Delete |
Vá para um slide específico
12 | 'Isso o levará ao slide número 4Application.ActiveWindow.View.GotoSlide (4) |
Mover slide
Você pode mover um slide da posição anterior para a nova posição
123456 | 'Mover do slide 3 para o primeiro slideDim oldPosition como inteiro, dim newPosition como inteirooldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Percorrer todos os slides
Você pode fazer algo com cada slide ou percorrer todos os slides para encontrar alguns slides e fazer algo sobre como usar o código;
123456 | Dim mySlide as SlidePara cada mySlide em ActivePresentation.Slides'Faça algo com o slide atual referido na variável' mySlide ''Debug.Print mySlide.NamePróximo slide |
Percorrer todas as formas de slide ativo
O poder do PowerPoint pode ser realizado usando ‘Formas’. O código a seguir percorre todas as formas no slide atual para que você possa manipulá-las como quiser;
123456789 | Dim currentSlide as SlideDim shp como formaDefinir currentSlide = Application.ActiveWindow.View.SlidePara cada shp em currentSlide.Shapes'Faça algo com a forma atual referida na variável' shp ''Por exemplo, imprima o nome da forma na janela imediataDebug.Print shp.NamePróximo shp |
Percorrer todas as formas em todos os slides
Você pode percorrer todas as formas da apresentação adicionando um loop para percorrer todos os slides.
123456789 | Dim currentSlide as SlideDim shp como formaPara Cada currentSlide In ActivePresentation.SlidesPara cada shp em currentSlide.Shapes'Faça algo com a forma atual referida na variável' shp 'Debug.Print shp.NamePróximo shpPróximo slide atual |
Percorrer todas as caixas de texto do slide ativo
As TextBoxes são as formas mais utilizadas em apresentações do PowerPoint. Você pode percorrer todas as caixas de texto adicionando uma marca para ‘Tipo de forma’. As TexBoxes têm o tipo de forma definido como a constante VBA msoTextBox (o valor numérico da constante é 17)
1234567891011 | Dim currentSlide as SlideDim shp como formaDefinir currentSlide = Application.ActiveWindow.View.SlidePara cada shp em currentSlide.Shapes'Verifique se o tipo de forma é msoTextBoxSe shp.Type = 17 Then 'msoTextBox = 17'Imprime o texto no TextBoxDebug.Print shp.TextFrame2.TextRange.TextFim sePróximo shp |
Percorrer todas as caixas de texto em todos os slides
Novamente, você pode percorrer todas as caixas de texto na apresentação adicionando um loop para percorrer todos os slides.
1234567891011 | Dim currentSlide as Slide Dim shp as ShapePara Cada currentSlide In ActivePresentation.SlidesPara cada shp em currentSlide.Shapes'Verifique se o tipo de forma é msoTextBoxSe shp.Type = 17 Then 'msoTextBox = 17'Faça algo com o TextBox referido na variável' shp 'Debug.Print shp.TextFrame2.TextRange.TextFim sePróximo shpPróximo slide atual |
Copiar slides selecionados para uma nova apresentação PPT
Para copiar determinados slides para uma nova apresentação, primeiro selecione os slides desejados na apresentação existente e, em seguida, execute o código abaixo;
123456789101112131415161718 | Dim currentPresentation as PresentationDim currentSlide as SlideDim newPresentation as Presentation'Salvar referência à apresentação atualDefina currentPresentation = Application.ActivePresentation'Salvar referência ao slide atualDefinir currentSlide = Application.ActiveWindow.View.Slide'Adicionar nova apresentação e salvar como referênciaDefinir NewPresentation = Application.Presentations.Add'Copiar slides selecionadosSelection.Copy'Cole em uma nova apresentaçãoNewPresentation.Slides.Paste |
Copiar slide ativo para o final da apresentação ativa
12345 | 'Copiar slide atualApplication.ActiveWindow.View.Slide.Copy'Cole no finalActivePresentation.Slides.Paste |
Exemplos úteis de macros do PowerPoint
Aqui estão alguns exemplos de macro úteis que mostram como fazer tarefas. Eles também demonstrarão os conceitos descritos acima.
Alterar slide durante a apresentação de slides
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex As IntegerDim SlideIndexPrevious As Integer'Alterar o slide atual para o slide 4 selecionado durante a apresentação de slidesSlideIndex = 4'Índice da janela de apresentação de slides atual é 1 na coleção SlideShowWindowsSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexEnd Sub |
Alterar fonte em todos os slides em todas as caixas de texto
123456789101112131415 | Sub ChangeFontOnAllSlides ()Dim mySlide como slideDim shp como forma'Alterar o tamanho da fonte em todos os slidesPara cada mySlide em ActivePresentation.SlidesPara cada shp em mySlide.ShapesSe shp.Type = 17 Then 'msoTextBox = 17'Mude o tamanho da fonte para 24shp.TextFrame.TextRange.Font.Size = 24Fim sePróximo shpPróximo mySlideEnd Sub |
Mudar maiúsculas de minúsculas para normal em todas as caixas de texto
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide como slideDim shp como forma'Mudar de maiúsculas para maiúsculas em todos os slidesPara cada mySlide em ActivePresentation.SlidesPara cada shp em mySlide.ShapesSe shp.Type = 17 Then 'msoTextBox = 17'Alterar maiúsculas para maiúsculas normaisshp.TextFrame2.TextRange.Font.Allcaps = FalseFim sePróximo shpPróximo mySlideEnd Sub |
Alternar entre maiúsculas e minúsculas em todas as caixas de texto
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide como slideDim shp como forma'Alternar entre maiúsculas e maiúsculas normais para todos os slidesPara cada mySlide em ActivePresentation.SlidesPara cada shp em mySlide.ShapesSe shp.Type = 17 Then 'msoTextBox = 17'Alternar entre maiúsculas e maiúsculas normaisshp.TextFrame2.TextRange.Font.Allcaps = _Não é shp.TextFrame2.TextRange.Font.AllcapsFim sePróximo shpPróximo mySlideEnd Sub |
Remover sublinhado dos descendentes
Na tipografia, um descendente é a parte de uma letra que se estende abaixo da linha de base de uma fonte. Na maioria das fontes, os descendentes são reservados para caracteres minúsculos, como g, j, q, p, y e, às vezes, f.
Quando você sublinha o texto, ele não fica bem em descendentes. Aqui está o código para remover o sublinhado de todos os caracteres g, j, p, q e y em toda a apresentação.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide como slideDim shp como formaDim descenders_list As StringFrase obscura como stringDim x enquanto'Remover sublinhados dos descendentesdescenders_list = "gjpqy"Para cada mySlide em ActivePresentation.SlidesPara cada shp em mySlide.ShapesSe shp.Type = 17 Then 'msoTextBox = 17'Remova o sublinhado das letras "gjpqy"Com shp.TextFrame.TextRangefrase = .TextPara x = 1 para Len (.Text)Se InStr (descenders_list, Mid $ (frase, x, 1))> 0 Então.Caracteres (x, 1) .Font.Underline = FalseFim sePróximo xTerminar comFim sePróximo shpPróximo mySlideEnd Sub |
Remover animações de todos os slides
Use o código a seguir para remover todas as animações definidas em uma apresentação.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide como slideDim i enquantoPara cada mySlide em ActivePresentation.SlidesPara i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Remover Cada AnimaçãomySlide.TimeLine.MainSequence.Item (i) .DeleteProximo euPróximo mySlideEnd Sub |
Salvar apresentação como PDF
Você pode salvar facilmente a apresentação ativa em formato PDF.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName As StringDim PDFName As String'Salvar PowerPoint como PDFpptName = ActivePresentation.FullName'Substitua a extensão do arquivo PowerPoint no nome para PDFPDFName = Left (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2End Sub |
Localizar e substituir texto
Você pode localizar e substituir texto em Todas as caixas de texto de todos os slides. Após a primeira instância do texto que você deseja encontrar (definida por findWhat), você precisa percorrer o comando Find para encontrar outras instâncias, se houver.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide como slideDim shp como formaDim findWhat As StringDim replaceWith As StringDim ShpTxt As TextRangeDim TmpTxt As TextRangefindWhat = "chacal"substituirWith = "raposa"'Encontrar, encontrar e substituirPara cada mySlide em ActivePresentation.SlidesPara cada shp em mySlide.ShapesSe shp.Type = 17 Then 'msoTextBox = 17Defina ShpTxt = shp.TextFrame.TextRange'Encontrar a primeira instância da palavra "Encontrar" (se houver)Defina TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = Verdadeiro)'Encontre quaisquer instâncias adicionais da palavra "Encontrar" (se houver)Faça enquanto não TmpTxt não é nadaDefina ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Defina TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = replaceWith, _WholeWords: = Verdadeiro)CicloFim sePróximo shpPróximo mySlideEnd Sub |
Exportar slide como imagem
Você pode exportar o SLide atual (ou qualquer outro slide) como imagem PNG ou JPG (JPEG) ou BMP.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType As StringDim pptName As StringDim imageName As StringDim mySlide como slide'Exportar slide atual para imagemimageType = "png" 'ou jpg ou bmppptName = ActivePresentation.FullNameimageName = Left (pptName, InStr (pptName, ".")) & imageTypeDefinir mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub |
Redimensionar imagem para cobrir o slide inteiro
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide como slideDim shp como forma'Resize Image to full slide size'Alterar a altura e largura da primeira forma no slide atual'para caber nas dimensões do slideDefinir mySlide = Application.ActiveWindow.View.slideDefina shp = mySlide.Shapes (1)'''' Substitua as duas afirmações acima por'' a seguinte declaração se você quiser'' expande a forma atualmente selecionada'' dará erro se nada for selecionado'Definir shp = ActiveWindow.Selection.ShapeRange (1)Com shp.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Left = 0.Top = 0Terminar comEnd Sub |
Sair de todos os shows de slides em execução
Se você tiver várias apresentações de slides abertas ao mesmo tempo, poderá fechá-las usando a macro abaixo.
1234567 | Sub ExitAllRunningSlideShows ()Do While SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitCicloEnd Sub |
Automatizando PowerPoint a partir do Excel
Você também pode se conectar ao PowerPoint por meio de outros aplicativos (como Excel e Word). Como primeira etapa, você deve consultar uma instância do PowerPoint.
Existem duas maneiras de fazer isso - ligação inicial e ligação tardia .
Open PowerPoint - Early Binding
Em ‘Early Binding’ você deve definir explicitamente uma referência a ‘Microsoft PowerPoint 16 Object Library’ (para MS Office 2022) no VBE (Editor do Visual Basic) usando a opção Ferramentas-> Referências.
123 | 'Early BindingDim pptApp como aplicativoDefina pptApp = Novo PowerPoint.Application |
Open PowerPoint - Late Binding
Em 'Late Binding' a variável do aplicativo é declarada como um objeto e o mecanismo VBA se conecta ao aplicativo correto em tempo de execução.
123 | 'Late BindingDim pptApp como objetoDefina pptApp = CreateObject ("PowerPoint.Application") |
Tornar o aplicativo visível
Depois de definir a referência para o aplicativo PowperPoint, pode ser necessário torná-la visível.
1 | pptApp.Visible = True |
Maniplular PowerPoint
Você pode usar todos os métodos para manipular apresentações, de dentro do PowerPoint, descritos acima a partir do Excel, apenas adicionando a referência ao PowerPoint criado por você acima.
Por exemplo
1 | Presentations.Open ("My Presentation.pptx") |
tem que ser usado gostei disso
1 | pptApp .Presentations.Open ("Minha apresentação.pptx") |
Feche o aplicativo
Depois de concluir o que deseja fazer com o aplicativo PowerPoint, você deve fechá-lo e liberar a referência.
12 | pptApp.QuitDefinir pptApp = Nothing |
Copiar do Excel para o PowerPoint
Este código irá copiar um intervalo do Excel para o PowerPoint:
Observação: Foi mantido o mais simples possível para mostrar como um intervalo do Excel pode ser copiado para o PowerPoint usando o VBA.
12345678910111213141516171819 | Sub copyRangeToPresentation ()'Abrir nova instância do PowerPointDefina pptApp = CreateObject ("PowerPoint.Application")Com pptApp'Criar uma nova apresentaçãoDefina ppt = .Presentations.Add'Adicionar um slide em brancoDefina newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Copiar intervalo da planilha ativa no ExcelActiveSheet.Range ("A1: E10"). Copiar'Colar no PowerPoint como uma imagemnewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Mudar para PowerPoint.AtivarTerminar comEnd Sub |
Perguntas frequentes do PowerPoint VBA
O que são macros no PPT?
Uma macro é um termo geral que se refere a um conjunto de instruções de programação que automatizam tarefas. As macros do PowerPoint (PPT) automatizam tarefas no PowerPoint usando a linguagem de programação VBA.
Como faço para usar o VBA no PowerPoint?
Para usar o VBA no PowerPoint, abra o Editor do VBA (ALT + F11 ou Desenvolvedor> Visual Basic).
Como faço para criar uma macro no PowerPoint?
1. Abra o Editor VBA (ALT + F11 ou Desenvolvedor> Visual Basic)
2. Vá para Inserir> Módulo para criar um Módulo de Código
3. Digite ‘Sub HelloWorld’ e pressione Enter
4. Entre as linhas ‘Sub HelloWorld’ e ‘End Sub’, digite ‘MsgBox“ Hello World! ’
5. Você criou uma macro!
6. Agora pressione 'F5' para executar a macro
Escrito por: Vinamra Chandra