Exemplos e tutoriais de macros VBA do PowerPoint

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

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave