Como criar e inserir formas no PowerPoint com VBA?

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.


Gengibre 2.7.53.0

Gengibre 2.7.53.0

Ginger é um verificador ortográfico e gramatical gratuito.

Blocos

Blocos

Blocks é um jogo intelectual para alunos do 3º ano do ensino fundamental praticarem suas habilidades de detecção e visão e é incluído pelos professores no programa de apoio ao ensino de TI.

Prézi 6.26

Prézi 6.26

Prezi é um aplicativo gratuito que permite criar apresentações digitais, tanto online quanto offline.

Mathway

Mathway

Mathway é um aplicativo muito útil que pode ajudá-lo a resolver todos aqueles problemas matemáticos que exigem uma ferramenta mais complexa do que a calculadora integrada no seu dispositivo.

Apresentador Adobe

Apresentador Adobe

Adobe Presenter é um software de e-Learning lançado pela Adobe Systems e disponível na plataforma Microsoft Windows como um plug-in do Microsoft PowerPoint.

Tucano 2.3.0

Tucano 2.3.0

Tucano é uma plataforma de tecnologia educacional. Ele permite que você aprenda um novo idioma enquanto navega em sites comuns do dia a dia.

ENetViet 24.2

ENetViet 24.2

eNetViet é um aplicativo que ajuda a conectar os pais com a escola onde seus filhos estudam, para que possam entender claramente a situação atual de aprendizagem de seus filhos.

Duolingo

Duolingo

Duolingo - Aprenda Idiomas Gratuitamente, ou simplesmente Duolingo, é um programa educacional que permite aprender e praticar diversos idiomas.

Digitação rápida

Digitação rápida

RapidTyping é uma ferramenta de treinamento de teclado conveniente e fácil de usar que o ajudará a melhorar sua velocidade de digitação e reduzir erros ortográficos. Com aulas organizadas para vários níveis diferentes, o RapidTyping ensinará como digitar ou melhorar as habilidades existentes.

MathType 7.4.10.53

MathType 7.4.10.53

MathType é um software de equação interativo do desenvolvedor Design Science (Dessci), que permite criar e anotar notações matemáticas para processamento de texto, apresentações, eLearning, etc. Este editor também é usado para criar documentos TeX, LaTeX e MathML.