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  LongSingle 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.

Leave a Comment

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003 no Windows 10?

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003 no Windows 10?

Cansado de corrigir o código de erro 0x0003 da Nvidia Geforce Experience no PC com Windows 10 e nada está funcionando? Em seguida, siga as correções fáceis fornecidas neste artigo.

Corrigir NOX Player sem som Windows 10 com 9 soluções rápidas

Corrigir NOX Player sem som Windows 10 com 9 soluções rápidas

Você está enfrentando NOX Player No Sound Issue enquanto joga seu jogo favorito? Em seguida, leia este guia detalhado e resolva o problema.

[RESOLVIDO] Erros do Call of Duty Advanced Warfare - travando, travando, FPS baixo e mais

[RESOLVIDO] Erros do Call of Duty Advanced Warfare - travando, travando, FPS baixo e mais

Aprenda a solucionar vários erros do Call of Duty Advanced Warfare, como travamentos, gagueira e FPS baixo para uma experiência de jogo otimizada.

Como corrigir um erro de falha ao carregar Steamui.dll no Steam

Como corrigir um erro de falha ao carregar Steamui.dll no Steam

Um erro fatal "falha ao carregar steamui.dll" no Steam pode ser corrigido. Confira as soluções eficazes para resolver este problema.

Como corrigir o erro 3000 do Twitch? [100% resolvido]

Como corrigir o erro 3000 do Twitch? [100% resolvido]

Obtendo o Twitch Error 3000 no Chrome, siga as soluções fornecidas e comece a vaporizar o Twitch sem o erro de decodificação do recurso 3000 Media.

[RESOLVIDO] Erros do American Truck Simulator: Crash, Steam_Api64.Dll está ausente e mais

[RESOLVIDO] Erros do American Truck Simulator: Crash, Steam_Api64.Dll está ausente e mais

Quer CORRIGIR ERROS DO AMERICAN TRUCK SIMULATOR: CRASH, LOW FPS, STEAM_API64.DLL ESTÁ FALTANDO PROBLEMA e MAIS, então siga as soluções fornecidas com cuidado.

Desempenho lento do Microsoft Word? Sete dicas para tornar o Word 365 / 2019 / 2016 muito mais rápido

Desempenho lento do Microsoft Word? Sete dicas para tornar o Word 365 / 2019 / 2016 muito mais rápido

Saiba como você pode facilmente tornar o Word 365 mais rápido ao desabilitar suplementos, atualizar seu hardware e se livrar de arquivos temporários.

[RESOLVIDO] Como corrigir League Of Legends d3dx9_39.dll ausente, erro DirectX

[RESOLVIDO] Como corrigir League Of Legends d3dx9_39.dll ausente, erro DirectX

Aprenda a corrigir erros d3dx9_39.dll e DirectX em League Of Legends. Siga as soluções fornecidas para resolver erros DirectX ausentes d3dx9_39.dll.

Como corrigir o problema do controlador PS5 não conecta/não sincroniza?

Como corrigir o problema do controlador PS5 não conecta/não sincroniza?

Se o controlador PS5 não se conectar ou não sincronizar, experimente estas soluções testadas e comprovadas para corrigir esses problemas de conexão.

Como corrigir NTLDR está faltando erro no Windows 10/8/7?

Como corrigir NTLDR está faltando erro no Windows 10/8/7?

Saiba como solucionar o erro "NTLDR está faltando" no Windows com as soluções mais eficientes. Conheça também o que causa o erro NTLDR e outras informações relevantes.