Compartilhar via


Objeto Shape (Publisher)

Representa um objeto na camada de desenho, como uma AutoForma, uma forma livre, objeto OLE, controle ActiveX ou imagem. O objeto Shape é membro da coleção Shapes, que inclui todas as formas em uma página ou em uma seleção.

Observação

Há três objetos que representam formas:

  • A coleção Shapes , que representa todas as formas em um documento.
  • A coleção ShapeRange , que representa um subconjunto especificado das formas em um documento (por exemplo, um objeto ShapeRange pode representar formas um e quatro no documento, ou pode representar todas as formas selecionadas no documento).
  • O objeto Shape , que representa uma única forma em um documento.

Se você deseja trabalhar com várias formas ao mesmo tempo ou com formas dentro da seleção, use uma coleção ShapeRange.

Comentários

Retornar uma forma existente em um documento

Use Shapes (index), em que index é o nome ou o número do índice, para retornar um único objeto Shape .

Cada forma recebe um nome padrão quando é criada. Por exemplo, se você adicionar três formas diferentes a um documento, elas podem ser chamadas "Rectangle 2", "TextBox 3" e "Oval 4". Para dar a uma forma um nome mais significativo, defina a propriedade Name da forma.

Retornar uma forma ou formas dentro de uma seleção

Use Selection.ShapeRange (índice), em que o índice é o nome ou o número do índice, para retornar um objeto Shape que representa uma forma dentro de uma seleção.

Retornar uma forma recém-criada

Para adicionar um objeto Shape à coleção de formas do documento especificado e retornar um objeto Shape que representa a forma recém-criada, use um dos seguintes métodos da coleção Shapes :

Trabalhar com um grupo de formas

Use GroupItems (index), em que o índice é o nome da forma ou o número de índice dentro do grupo, para retornar um objeto Shape que representa uma única forma em uma forma agrupada. Use o método ShapeRange.Group ou Regroup para agrupar um intervalo de formas e retornar um único objeto Shape que representa o grupo recém-formado. Depois que um grupo for formado, você pode trabalhar com o grupo da mesma forma que trabalha com qualquer outra forma.

Formatar uma forma

  • Use a propriedade AutoShapeType para especificar o tipo de AutoShape: oval, retângulo ou balão, por exemplo.

  • Use a propriedade Callout , que retorna o objeto CalloutFormat , para formatar callouts de linha.

  • Use a propriedade Fill para retornar o objeto FillFormat, que contém todas as propriedades e métodos para formatar o preenchimento de uma forma fechada.

  • Use a propriedade da linha para retornar um objeto LineFormat que contém propriedades e métodos para formatação de linhas e setas.

  • Use os métodos PickUp e Apply para transferir a formatação de uma forma para outra.

  • Use o método SetShapesDefaultProperties para definir a formatação para a forma padrão do documento. As novas formas herdam muitos dos atributos da forma padrão.

  • Use a propriedade Shadow , que retorna o objeto ShadowFormat , para formatar uma sombra.

  • Use a propriedade TextEffect , que retorna o objeto TextEffectFormat , para formatar o WordArt.

  • Use as propriedades TextFrame e Cell.TextRange para retornar os objetos TextFrame e TextRange , respectivamente, que contêm todas as propriedades e métodos para inserir e formatar texto em formas e publicações e associar os quadros de texto.

  • Use a propriedade TextWrap , que retorna o objeto WrapFormat , para definir como o texto envolve formas.

  • Use a propriedade ThreeD , que retorna o objeto ThreeDFormat , para criar formas 3D.

  • Use a propriedade Type para especificar o tipo de forma: freeform, AutoShape, objeto OLE, chamada ou imagem vinculada, por exemplo.

  • Use as propriedades Width e Height para especificar o tamanho da forma.

Exemplo

O exemplo a seguir inverte horizontalmente a forma um do documento ativo.

Sub FlipShape() 
    ActiveDocument.Pages(1).Shapes(1).Flip FlipCmd:=msoFlipHorizontal 
End Sub

O exemplo a seguir inverte horizontalmente a forma chamada Retângulo 1 no documento ativo.

Sub FlipShapeByName() 
    ActiveDocument.Pages(1).Shapes("Rectangle 1") _ 
        .Flip FlipCmd:=msoFlipHorizontal 
End Sub

O exemplo a seguir define o preenchimento da primeira forma na seleção, pressupondo-se de que a seleção contenha pelo menos uma forma.

Sub FillSelectedShape() 
    Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0) 
End Sub

O exemplo a seguir define o preenchimento de todas as formas da seleção, supondo que a seleção contenha pelo menos uma forma.

Sub FillAllSelectedShapes() 
    Dim shpShape As Shape 
    For Each
shpShape In Selection.ShapeRange 
       
shpShape.Fill.ForeColor.RGB = RGB(Red:=255, Green:=0, Blue:=0) 
    Next shpShape 
End Sub

O exemplo a seguir adiciona um retângulo ao documento ativo.

Sub AddNewShape() 
    ActiveDocument.Pages(1).Shapes.AddShape Type:=msoShapeRectangle, _ 
        Left:=400, Top:=72, Width:=100, Height:=200 
End Sub

Este exemplo adiciona três formas à publicação ativa, agrupa as formas e define a cor de preenchimento para cada uma das formas do grupo.

Sub WorkWithGroupShapes() 
 
    With ActiveDocument.Pages(1).Shapes 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=100, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=250, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=400, _ 
            Top:=72, Width:=100, Height:=100 
        .SelectAll 
 
        With Selection.ShapeRange 
            .Group 
            .GroupItems(1).Fill.ForeColor _ 
                .RGB = RGB(Red:=255, Green:=0, Blue:=0) 
            .GroupItems(2).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=255, Blue:=0) 
            .GroupItems(3).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=0, Blue:=255) 
        End With 
    End With 
End Sub

O exemplo a seguir adiciona uma caixa de texto à primeira página da publicação ativa e, em seguida, adiciona texto a ela e formata o texto.

Sub CreateNewTextBox() 
    With ActiveDocument.Pages(1).Shapes.AddTextbox( _ 
        Orientation:=pbTextOrientationHorizontal, Left:=100, _ 
        Top:=100, Width:=200, Height:=100).TextFrame.TextRange 
        .Text = "This is a textbox." 
        With .Font 
            .Name = "Stencil" 
            .Bold = msoTrue 
            .Size = 30 
        End With 
    End With 
End Sub

Métodos

Propriedades

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.