Como criar e inserir formas no PowerPoint com VBA?

Alguns dias atrás, eu queria automatizar a tarefa bastante mundana de criar alguns slides do PowerPoint. Ao automatizar o PowerPoint, você normalmente trabalha com a coleção Slides and Shapes. Slides é bastante autoexplicativo, e formas é praticamente todo o resto, incluindo caixas de texto, botões de ação, objetos de mídia, rótulos, imagens, textos explicativos, fluxogramas e assim por diante. Embora eu esteja apresentando as técnicas com o PowerPoint, parte da sintaxe é bastante aplicável ao Microsoft Word e Excel.

Apenas para recapitular, antes de começar com o desenvolvimento de macro VBA no PowerPoint, você precisa ter sua guia de desenvolvimento habilitada .

Primeiramente, vamos começar criando automaticamente uma apresentação com alguns slides como mostrado neste tutorial: criando uma apresentação em VBA .

Agora podemos começar a trabalhar com Shapes. Primeiro, vamos abrir o Editor VBA pressionando Alt+ F11. Se você seguiu o tutorial anterior, deve ter o módulo 1 na sua lista de Módulos (como mostrado abaixo)

Trabalhando com formas com VBA

Adicionando uma caixa de texto com VBA

Começaremos adicionando uma caixa de texto vertical ao nosso primeiro slide na apresentação. Adicione o seguinte código ao Module1, então vá em frente e pressione o botão Salvar (Ctrl+s) e execute sua macro (pressione F5 ou pressione Run Sub/User Form).

Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)

    With MySlide.Shapes
        .AddTextbox(Orientation:=msoTextOrientationVertical, _
         Left:=90, Top:=200, Width:=80, _
         Height:=200).TextFrame.TextRange.Text _
        = ("This is my vertical text box")

End With

End Sub

Observe que você pode redimensionar as dimensões da caixa de texto com bastante facilidade com o VBA. Nesse caso, redimensionaremos a primeira forma no segundo slide, sinta-se à vontade para modificar conforme necessário.

Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)

'Add your required dimensions as needed below
   With MyShape
         .Width = 200
         .Height = 35

End With
End Sub

Efeitos de texto com VBA

Vamos supor agora que queremos adicionar uma caixa de texto a todos os slides da apresentação, desta vez um pouco mais visualmente atraente. Para fazer isso, usaremos o VBA para criar efeitos de texto personalizados que podemos incorporar em um ou mais slides da apresentação. Primeiro, percorreremos os slides da apresentação e, em seguida, adicionaremos o efeito de texto conforme necessário.

Sub SetEffects()

Dim i As Integer

For i = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(i) _
    .Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
    "Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next

End Sub

Aqui está o resultado ;-):

Como criar e inserir formas no PowerPoint com VBA?

Observe que você também pode usar uma marca d'água simples para obter esse resultado específico.

Texto explicativo do PowerPoint com VBA

Nosso próximo exemplo será adicionar textos explicativos à sua apresentação. Neste exemplo, adicionaremos um texto explicativo ao segundo slide.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Configurando propriedades para uma forma

Muitas propriedades de formatação de formas não são definidas por propriedades que se aplicam diretamente ao  objeto Shape  ou  ShapeRange  . Em vez disso, os atributos de forma relacionados são agrupados em objetos secundários, como o  objeto FillFormat  , que contém todas as propriedades relacionadas ao preenchimento da forma, ou o  objeto LinkFormat  , que contém todas as propriedades exclusivas dos objetos OLE vinculados. Para definir propriedades para uma forma, primeiro você deve retornar o objeto que representa o conjunto de atributos de forma relacionados e, em seguida, definir as propriedades desse objeto retornado. Por exemplo, você usa a  propriedade Fill  para retornar o  objeto FillFormat  e, em seguida, define a  propriedade ForeColor  do  objeto FillFormat  para definir a cor de preenchimento do primeiro plano para a forma especificada, conforme mostrado no exemplo a seguir.

VB

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Aplicando uma propriedade ou método a diversas formas ao mesmo tempo

Na interface do usuário, existem algumas operações que você pode realizar com diversas formas selecionadas; por exemplo, você pode selecionar várias formas e definir todos os seus preenchimentos individuais de uma só vez. Existem outras operações que você só pode realizar com uma única forma selecionada; por exemplo, você só poderá editar o texto em uma forma se uma única forma estiver selecionada.

No Visual Basic, existem duas maneiras de aplicar propriedades e métodos a um conjunto de formas. Essas duas maneiras permitem que você execute qualquer operação que possa ser executada em uma única forma em uma variedade de formas, independentemente de você poder executar a mesma operação na interface do usuário ou não.

  • Se a operação funcionar em várias formas selecionadas na interface do usuário, você poderá executar a mesma operação no Visual Basic construindo uma  coleção ShapeRange  que contém as formas com as quais deseja trabalhar e aplicando as propriedades e os métodos apropriados diretamente à  coleção ShapeRange  .

  • Se a operação não funcionar em várias formas selecionadas na interface do usuário, você ainda poderá executar a operação no Visual Basic fazendo um loop pela  coleção Shapes  ou por meio de uma  coleção ShapeRange  que contém as formas com as quais deseja trabalhar e aplicando as propriedades apropriadas e métodos para os  objetos Shape individuais  na coleção.

Muitas propriedades e métodos que se aplicam ao  objeto Shape  e  à coleção ShapeRange  falham se aplicados a determinados tipos de formas. Por exemplo, a  propriedade TextFrame  falhará se for aplicada a uma forma que não pode conter texto. Se você não tiver certeza de que cada forma em uma  coleção ShapeRange  pode ter uma determinada propriedade ou método aplicado a ela, não aplique a propriedade ou método à  coleção ShapeRange  . Se quiser aplicar uma dessas propriedades ou métodos a uma coleção de formas, você deverá percorrer a coleção e testar cada forma individual para ter certeza de que é um tipo apropriado de forma antes de aplicar a propriedade ou o método a ela.

Aplicando uma propriedade ou método a uma coleção ShapeRange

Se você puder executar uma operação em diversas formas selecionadas na interface do usuário ao mesmo tempo, poderá fazer o equivalente programático construindo uma  coleção ShapeRange  e, em seguida, aplicando as propriedades ou métodos apropriados a ela. O exemplo a seguir constrói um intervalo de formas que contém as AutoFormas denominadas "Big Star" e "Little Star" e aplica um preenchimento gradiente a elas.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

A seguir estão diretrizes gerais sobre como as propriedades e os métodos se comportam quando são aplicados a uma  coleção ShapeRange  .

  • Aplicar um método à coleção é equivalente a aplicar o método a cada  objeto Shape individual  dessa coleção.

  • Definir o valor de uma propriedade da coleção equivale a definir o valor da propriedade de cada forma individual nesse intervalo.

  • Uma propriedade da coleção que retorna uma constante retorna o valor da propriedade para uma forma individual na coleção se todas as formas na coleção tiverem o mesmo valor para essa propriedade. Se nem todas as formas da coleção tiverem o mesmo valor para a propriedade, ela retornará a constante "mista".

  • Uma propriedade da coleção que retorna um tipo de dados simples (como  Long ,  Single ou  String ) retorna o valor da propriedade para uma forma individual se todas as formas na coleção tiverem o mesmo valor para essa propriedade.

  • O valor de algumas propriedades só poderá ser retornado ou definido se houver exatamente uma forma na coleção. Se houver mais de uma forma na coleção, ocorrerá um erro em tempo de execução. Geralmente, esse é o caso para retornar ou definir propriedades quando a ação equivalente na interface do usuário só é possível com uma única forma (ações como editar texto em uma forma ou editar os pontos de uma forma livre).

As diretrizes anteriores também se aplicam quando você define propriedades de formas agrupadas em objetos secundários da  coleção ShapeRange  , como o  objeto FillFormat  . Se o objeto secundário representar operações que podem ser executadas em vários objetos selecionados na interface do usuário, você poderá retornar o objeto de uma  coleção ShapeRange  e definir suas propriedades. Por exemplo, você pode usar a  propriedade Fill  para retornar o  objeto FillFormat  que representa os preenchimentos de todas as formas na  coleção ShapeRange  . Definir as propriedades deste  objeto FillFormat  definirá as mesmas propriedades para todas as formas individuais na  coleção ShapeRange  .

Percorrendo uma coleção Shapes ou ShapeRange

Mesmo que você não possa executar uma operação em diversas formas na interface do usuário ao mesmo tempo selecionando-as e depois usando um comando, você pode executar a ação equivalente programaticamente percorrendo a  coleção Shapes  ou por meio de uma  coleção ShapeRange  que contém as formas que você deseja. deseja trabalhar e aplicando as propriedades e métodos apropriados aos  objetos Shape individuais  na coleção. O exemplo a seguir percorre todas as formas e adiciona texto a cada forma que é uma AutoForma. e adiciona texto a cada forma que é uma AutoForma.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
For Each sh In myDocument.Shapes 
    If sh.Type = msoAutoShape Then 
        sh.TextFrame.TextRange.InsertAfter " (version 1)" 
    End If 
Next

O exemplo a seguir constrói  uma coleção ShapeRange  que contém todas as formas atualmente selecionadas na janela ativa e define o texto em cada forma da coleção que pode conter texto.

VB

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Alinhar, distribuir e agrupar formas em um intervalo de formas

Use os  métodos Align  e  Distribute  para posicionar um conjunto de formas em relação umas às outras ou em relação ao documento que as contém. Use o  método Group  ou o  método Regroup  para formar uma única forma agrupada a partir de um conjunto de formas.

Deixar um comentário

Como criar um sistema simples de rastreamento de leads no Excel antes de comprar um CRM

Como criar um sistema simples de rastreamento de leads no Excel antes de comprar um CRM

Antes de investir em um software de CRM, crie uma planilha de acompanhamento de leads prática no Excel com tabelas, listas suspensas, datas de acompanhamento, filtros, formatação condicional e um painel de controle simples com tabela dinâmica.

Planilha de Presença Simples e Imprimível para Creche Domiciliar: O Que Registrar e Por Quê

Planilha de Presença Simples e Imprimível para Creche Domiciliar: O Que Registrar e Por Quê

Utilize esta folha de presença simples e imprimível para creche domiciliar para registrar chegadas, saídas, ausências, assinaturas e documentos necessários.

Planilha de contagem de estoque simples para Excel: um layout pronto para o varejo que permite conciliações rápidas.

Planilha de contagem de estoque simples para Excel: um layout pronto para o varejo que permite conciliações rápidas.

Crie uma planilha simples de contagem de estoque em Excel para lojas de varejo com controles de SKU, localização, quantidade contada, variação, recontagem e impressão.

Modelo de estratégia de marketing de uma página para empresas locais (imprimível)

Modelo de estratégia de marketing de uma página para empresas locais (imprimível)

Utilize este modelo de estratégia de marketing de uma página, pronto para impressão, para escolher um público-alvo local, oferta, combinação de canais, orçamento, ações e metas mensuráveis.

Modelo gratuito de planilha Excel para escala de trabalho de funcionários com calculadora automática de horas.

Modelo gratuito de planilha Excel para escala de trabalho de funcionários com calculadora automática de horas.

Crie uma escala de trabalho gratuita para seus funcionários no Excel, com horários de início e término, descontos de intervalos, gestão de turnos noturnos, totais semanais e uma calculadora de horas simples.

Melhores aplicativos gratuitos de faturamento para pequenas empresas de serviços nos EUA (2026)

Melhores aplicativos gratuitos de faturamento para pequenas empresas de serviços nos EUA (2026)

Compare os melhores aplicativos gratuitos de faturamento para empresas de serviços nos EUA em 2026, incluindo Zoho Invoice, Square, Wave, PayPal e Invoice Ninja.

Planilha simples de controle de folha de pagamento quinzenal em Excel para pequenas equipes: configuração ideal para iniciantes

Planilha simples de controle de folha de pagamento quinzenal em Excel para pequenas equipes: configuração ideal para iniciantes

Crie uma planilha simples de controle de folha de pagamento quinzenal no Excel para uma pequena equipe, com abas claras, fórmulas, verificações e limites práticos para uma conciliação segura da folha de pagamento.

Como exportar contatos do Salesforce para um formato Excel limpo

Como exportar contatos do Salesforce para um formato Excel limpo

Aprenda como exportar contatos do Salesforce para um arquivo Excel limpo, preservando IDs e campos de texto, removendo duplicados com segurança e evitando erros comuns em arquivos CSV.

Modelo de orçamento de obras de construção imprimível em Excel para pequenos empreiteiros

Modelo de orçamento de obras de construção imprimível em Excel para pequenos empreiteiros

Crie um orçamento de construção imprimível no Excel com categorias de custos práticas, fórmulas, campos de margem de lucro, configurações de impressão e uma lista de verificação pronta para o empreiteiro.

Checklist de Planejamento de Eventos e Modelo de Orçamento para Word

Checklist de Planejamento de Eventos e Modelo de Orçamento para Word

Use este checklist de planejamento de eventos e modelo de orçamento imprimível no Word para rastrear responsáveis, prazos, custos, fornecedores e a prontidão do dia do evento com verificações de qualidade claras.