Поделиться через


Объект Shape (издатель)

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

Примечание.

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

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

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

Замечания

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

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

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

Возврат фигуры или фигур в выделенном фрагменте

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

Возврат только что созданной фигуры

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

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

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

Форматирование фигуры

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

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

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

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

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

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

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

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

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

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

  • Используйте свойство ThreeD , которое возвращает объект ThreeDFormat , чтобы создать трехмерные фигуры.

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

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

Пример

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

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 и обратная связь.