Глава 10.

Работа с графическими объектами

Семейства Shapes и ShapeRange

Объект shape — это любой графический объект, размешенный на рабочем листе или диаграмме. Семейство shapes представляет собой семейство всех графических объектов рабочего листа. Семейство ShapeRange содержится в семействе shapes и является конкретным набором графических объектов рабочего листа. В крайних случаях семейство ShapeRange может состоять только из одного объекта или совпадать с семейством shapes, которое его содержит.

Семейство shapes обычно применяется для создания нового объекта shape. Когда надо работать (т. е. задавать или изменять свойства) с отдельным элементом семейства shapes обычно используют объект shape, а когда следует оперировать с набором элементов этого семейства — семейство ShapeRange.

Большинство свойств объекта shape или семейства ShapeRange определяются в два этапа. Сначала задается свойство, которое возвращает объект, содержащий устанавливаемые свойства, а уж потом для этого объекта определяется требуемое свойство. Например, если надо изменить тип линии, то у выбранного объекта семейства ShapeRange используется свойство Line, которое возвращает объект LineFormat, содержащий свойства для установки цвета, толщины и типа граничных линий объекта shape. Получив таким образом объект LineFormat, при помощи его свойств устанавливается конкретный тип линии.

ActiveSheet.Shapes.AddLine(104.25, 135.75, 230.25, 146.25).Select

Selection.ShapeRange.Line.Weight = 3#

Selection.ShapeRange.Line.Visible = msoTrue

Selection.ShapeRange.Line.Style = msoLineSingle

Перечислим основные свойства объекта shape, возвращающие объект shape конкретного типа.

Fill

Возвращает объект FillFormat, который содержит
свойства для задания цвета, типа штриховки и текстуры объекта Shape

Line

Возвращает объект LineFormat, содержащий свойства для установки цвета, толщины и типа граничных линий Объекта Shape

Shadow

Возвращает объект shadowFormat, содержащий свойства для настройки тени объекта shape

TextFrame

Возвращает объект TextFrame — текстовое поле

Приведем несколько наиболее часто употребляемых общих свойств объектов Shape.

Visible

Устанавливает видимость объекта

Left, Top, Width, Height

Задают координаты левого верхнего угла объекта, его ширину и высоту

OnAction

Устанавливает имя процедуры, которая будет запущена при выборе объекта

Приведем несколько наиболее часто употребляемых общих методов объектов

Shape.

Сору

Копирует объект Shape в буфер обмена

Cut

Копирует объект shape в буфер обмена с удалением

Delete

Удаляет объект shape

Paste

Вставляет объект shape из буфера ббмена

IncrementLeft, IncrementTop

Сдвигает объект shape по горизонтали и вертикали соответственно на заданное в аргументе количество пунктов.

Синтаксис:

IncrementLeft (Increment)

IncrementTop (Increment )

IncrementRotation

Поворачивает объект shape на заданный в аргументе угол.

Синтаксис:

IncrementRotation (Increment)

 

Методы, создающие объекты Shape

Рассмотрим методы, создающие новые элементы семейства shapes. Вручную объекты Shape создаются при помощи панели инструментов Рисование (Drawing).

AddShape

Возвращает объект Shape.

Синтаксис:

AddShape (Type, Left, Top, Width, Height)

Аргументы:

  • Tуре — специфицирует тип объекта. Допустимо 139 значений. Приведем несколько из них:

    msoShapeCube (куб), msoShapeRectangle (ПРЯМОУГОЛЬНИК), msoShapeOval (овал), msoShapeSmileyFace (улыбающееся лицо) ;

  • Left, Top — координаты левого верхнего угла объекта ;
  • Width, Height — ширина и высота объекта

Следующая последовательность инструкций создает три графических объекта: прямоугольник, овал и улыбающееся лицо (рис. 10.1). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Прямоугольник (Rectangle) Овал (Oval) панели инструментов Рисование (Drawing) и кнопку Улыбающееся лицо (Smaley Face) из раскрывающегося списка Автофигуры (AutoShapes) панели инструментов Рисование (Drawing).

Рис. 10.1. Графические объекты: прямоугольник, овал и улыбающееся лицо

ActiveSheet.Shapes.

AddShape(msoShapeRectangle, 117#, 27.75, 76.5, 40.5).Select

With Selection.ShapeRange

.Line.Weight = 3#

.Line.Visible = msoTrue

.Line.Style = msoLineDash

.Fill.ForeColor.SchemeColor = 13

.Fill.Visible = msoTrue

.Fill.Solid End With ActiveSheet.Shapes.

AddShape(msoShapeOval, 114.75, 109.5, 91.5, 49.5).Select

With Selection.ShapeRange

.Fill.ForeColor.SchemeColor = 45

.Fill.Visible = msoTrue

.Fill.Solid

.Line.Weight =2.25

.Line.Visible = msoTrue

.Line.Style = msoLineSingle

.Line.ForeColor.SchemeColor = 12

.Line.Visible = msoTrue End With ActiveSheet.Shapes. _

AddShape(msoShapeSmileyFace, 254.25, 99#, 70?5, 66#).Select

With Selection.ShapeRange

.Line.ForeColor.SchemeColor = 0

.Line.Visible = msoTrue

.Fill.Solid End With

AddLine

Возвращает объект shape, являющийся линией (отрезком).

Синтаксис:

AddLine (BeginX, BeginY, EndX, EndY)

Аргументы:

  • BeginX, BeginY, EndX, EndY — координаты концов отрезка


AddTextbox

Возвращает объект shape, являющийся надписью.

Синтаксис:

AddTextbox (Orientation, Left, Top, Width, Height)

Аргументы:

  • Orientation — устанавливает ориентацию текста в надписи. Допустимые значения:
    • msoTextOrientationDownward
    • msoTextOrientationHorizontal
    • msoTextOrientationMixed
    • msoTextOrientationUpward
    • msoTextOrientationVertical
  • Left, т.ор — координаты левого верхнего угла объекта
  • width, Height — ширина и высота объекта


Следующая последовательность инструкций создает три графических объекта: две линии, первая из которых со стрелкой, вторая без стрелки и текстовое поле (рис. 10.2). Вручную эти объекты можно было создать на рабочем листе, используя кнопки Стрелка (Arrow) Линия (Line) и Надпись (Text Box) панели инструментов Рисование (Drawing).

Рис. 10.2. Графические объекты: линии и текстовое поле

'

' Линия со стрелкой

'

ActiveSheet.Shapes.AddLine(571, 30#, 174#, 59.25).Select

With Selection.ShapeRange.Line

.Weight = 6#

.Visible = msoTrue

.Style = msoLineSingle

.BeginArrowheadStyle = msoArrowheadNone

.EndArrowheadStyle = msoArrowheadTriangle

.EndArrowheadWidth = msoArrowheadWidthMedium

.EndArrowheadLength = msoArrowheadLengthMedium

.Visible = msoTrue End With

'

' Простая линия

'

ActiveSheet.Shapes.AddLine(219.75, 23.25, 334.5, 67.5).Select

With Selection.ShapeRange.Line

.Visible = msoTrue

.Style = msoLineThinThick

.Weight =4.5

End With

'

' Текстовое поле

'

ActiveSheet.Shapes.

AddTextbox(msoTextOrientationHorizontal,

69.75, 87.75, 116.25, 76.5).Select

Selection.Characters.Text = "Пример двух линий"

With Selection.Characters(Start:=1, Length:=17).Font

.Name = "Arial Cyr"

.FontStyle = "полужирный"

.Size = 12

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

. Colorlndex = 5

End With

With Selection.ShapeRange.Fill

.ForeColor.SchemeColor = 42

.Visible = msoTrue

.Solid End With

AddTextEffect

Возвращает. объект shape, являющийся WordArt-объектом.

Синтаксис:

AddTextEffect (PresetTextEffeet, Text, FontName, FontSize, FontBold, Fontltalic, Left, Top)

Аргументы:

  • PresetTextEf feet — устанавливает текстовой эффект. Допустимые значения от msoTextEffect1 до msoTextEf fect30
  • Text — текст, отображаемый в объекте WordArt
  • FontName — название шрифта
  • Fontsize — размер шрифта
  • FontBold — допустимые значения: True (полужирный шрифт), False (в противном случае)
  • Fontltalic — допустимые значения: True (курсивный шрифт), False (в противном случае)
  • Left, тор — координаты левого верхнего угла объекта

AddPicture

  • Возвращает объект shape, являющийся рисунком, созданным на основе существующего файла. Синтаксис:
  • AddPicture (FileName, LinkToFile, SaveWithDocument , Left, Top, Width, Height)
  • FileName — строка, задающая имя файла, на основе которого создается рисунок
  • LinkToFile — допустимые значения: True
    (рисунок связан с файлом, на основе которого создан) и False (в противном случае)
  • SaveWithDocument — допустимые значения: True(сохраняется рисунок с рабочей книгой) и False (в рабочей книге сохраняется связь с рисунком, а не сам рисунок)
  • Left, тор — координаты левого верхнего угла объекта
  • Width, Height — ширина и высота объекта

Следующая последовательность инструкций создает WordArt-объект (рис. 10.3) и скрывает от пользователя панель инструментов WordArt. Вручную этот объект можно было создать на рабочем листе, используя кнопку Добавить объект WordArt (Insert WordArt) панели инструментов Рисование (Drawing).

Рис. 10.3. WordArt-объект

ActiveSheet.Shapes.AddTextEffeet(msoTextEffect27,_

"VBA " & Chr(13) & "" & Chr(10) & "Лучшее решение",

"Impact", 36#, msoFalse, msoFalse, 87tt, 45#).Select

Application.CommandBars("WordArt").Visible = False