Объект Shape (Publisher)

Представляет объект в уровне рисования, например автошап, freeform, объект OLE, ActiveX или изображение. Объект Shape входит в коллекцию Shapes , которая включает все фигуры на странице или в выборе.

Примечание

Существует три объекта, которые представляют фигуры:

  • Коллекция Shapes , представляю которой представлены все фигуры на документе.
  • Коллекция ShapeRange , которая представляет заданный подмножество фигур на документе (например, объект ShapeRange может представлять фигуры одного и четырех на документе, или он может представлять все выбранные фигуры в документе).
  • Объект Shape , который представляет одну фигуру на документе.

Если вы хотите работать с несколькими фигурами одновременно или с фигурами в рамках выбора, используйте коллекцию ShapeRange .

Примечания

Возвращение существующей фигуры в документе

Чтобы вернуть один объект Shape, используйте shapes (index), где индекс — это имя или номер индекса.

Каждой фигуре при ее создания назначено имя по умолчанию. Например, если добавить три различных фигуры в документ, они могут быть названы Прямоугольник 2, TextBox 3 и Овал 4. Чтобы дать фигуре более значимое имя, установите свойство Name формы.

Возвращение фигуры или фигуры в рамках выбора

Используйте Selection.ShapeRange (index), где индекс — это имя или номер индекса, чтобы вернуть объект Shape, который представляет фигуру в выборе.

Возвращение вновь созданной формы

Чтобы добавить объект Shape в коллекцию фигур для указанного документа и вернуть объект Shape , представляю который представляет вновь созданную фигуру, используйте один из следующих методов коллекции Shapes :

Работа с группой фигур

Используйте GroupItems (index), где индекс — это имя фигуры или номер индекса в группе, чтобы вернуть объект Shape, который представляет одну фигуру в сгруппивной форме. Используйте метод ShapeRange.Group или Regroup , чтобы сгруппировать диапазон фигур и вернуть один объект Shape , который представляет только что сформированную группу. После того как группа сформирована, вы можете работать с группой так же, как и с любой другой фигурой.

Формат формы

  • Используйте свойство AutoShapeType , чтобы указать тип AutoShape: например, овал, прямоугольник или воздушный шар.

  • Используйте свойство Callout , которое возвращает объект CalloutFormat , для формата вызовов строки.

  • Чтобы вернуть объект FillFormat , содержащий все свойства и методы форматирования заполнения закрытой формы, используйте свойство Fill.

  • Используйте свойство Line для возврата объекта LineFormat , который содержит свойства и методы форматирования линий и стрелок.

  • Используйте методы PickUp и Apply для переноса форматирования из одной фигуры в другую.

  • Для настройки форматирования формы по умолчанию для документа используйте метод SetShapesDefaultProperties . Новые фигуры наследуют многие атрибуты из формы по умолчанию.

  • Используйте свойство Shadow , которое возвращает объект ShadowFormat , для формата тени.

  • Используйте свойство TextEffect , которое возвращает объект TextEffectFormat , для формата WordArt.

  • Используйте свойства TextFrame и Cell.TextRange , чтобы вернуть объекты TextFrame и TextRange соответственно, которые содержат все свойства и методы вставки и форматирования текста в формах и публикациях и связывания текстовых кадров.

  • Используйте свойство TextWrap , возвращая объект WrapFormat , чтобы определить, как текст обтекает фигуры.

  • Чтобы создать 3D-фигуры, используйте свойство ThreeD , которое возвращает объект ThreeDFormat .

  • Используйте свойство Type , чтобы указать тип фигуры: freeform, AutoShape, объект OLE, callout или связанное изображение, например.

  • Используйте свойства Ширина и Высота , чтобы указать размер фигуры.

Пример

В следующем примере горизонтально переворачивается фигура на активном документе.

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

В следующем примере горизонтально переворачивается фигура с именем Rectangle 1 на активном документе.

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

В следующем примере задается заполняемая для первой фигуры в выборе, если предположить, что выбор содержит по крайней мере одну фигуру.

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

В следующем примере устанавливается заполнение для всех фигур в выборе, если предположить, что выбор содержит по крайней мере одну фигуру.

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

В следующем примере в активный документ добавляется прямоугольник.

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

В этом примере в активную публикацию добавляется три фигуры, группу фигур и задает цвет заполнения для каждой фигуры в группе.

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

В следующем примере текстовое поле добавляется на первую страницу активной публикации, а затем добавляется текст и форматирование текста.

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

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.