Коллекции Word CanvasShapes, GroupShapes и объект ShapeRange — Работа с графическии объектами

Коллекции Word CanvasShapes, GroupShapes и объект ShapeRange — Работа с графическии объектами Объектная модель Microsoft Word

В этой статье мы рассмотрим две коллекции Word – CanvasShapes и GroupShapes и один объект ShapeRange. Я решил поместить описание данных компонентов в одну статью, так как большая часть их свойств и методов дублируются и выполняют одну и ту же работу, только для разных графических компонентов.

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

CanvasShapes – Word, работа с графическими объектами

Коллекция CanvasShapes является своеобразным дубликатом коллекции Shapes, так как предоставляет все объекты Shape, которые находятся на указанном полотне. Word работа с графическими объектами. Для доступа к коллекции мы сначала должны добавить в документ новое полотно с помощью метода AddCanvas коллекции Shapes. Уже потом мы сможем создать ссылку на коллекцию CanvasShapes через свойство CanvasItems объекта Shape, который будет предоставлять нужное полотно.

Работа с графическим объектом - полотно (канва)

Обратите внимание, что у данной коллекции нет метода AddCanvas, то есть, мы не можем вставить полотно в полотно.

Свойства

Application— Возвращает объект Application, представляющий приложение Microsoft Word.

Count— Возвращает количество фигур в полотне.

Методы

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

Следующие методы по работе с графическими объектами Word выполняют аналогичную функцию, что и одноименные методы в коллекции Shapes, только для конкретного полотна, поэтому описывать их нет смысла.

AddCallout, AddCurve, AddLabel, AddLine, AddPicture, AddPolyline, AddShape, AddTextbox, AddTextEffect, BuildFreeform, Item, Range, SelectAll

Ниже я привел два примера кода на языке VBScript и JScript, если запустить сценарии то произойдет создание нового документа Word, который будет содержать четыре полотна с набором фигур в каждом.

' ********************************************************************
' Коллекция Word CanvasShapes
' Word работа с графическими объектами
' CanvasShapes.vbs
' ********************************************************************
 
Option Explicit
 
dim oWord, oDoc, shpCanvas
 
Set oWord = CreateObject("Word.Application")            ' ссылка на объект Word Application
Set oDoc = oWord.Documents                                    ' ссылка на коллекцию Documents
oDoc.Add()
oWord.Visible = true
Set shpCanvas = oDoc(1).Shapes                                ' ссылка на коллекцию Shapes
 
'*****************************************************
' добавляем в документ четыри полотна
'*****************************************************
shpCanvas.AddCanvas 10, 10, 140, 140
shpCanvas.AddCanvas 160, 10, 140, 140
shpCanvas.AddCanvas 10, 160, 140, 140
shpCanvas.AddCanvas 160, 160, 140, 140
 
'*****************************************************
' добавляем фигуры в первое полотно
'*****************************************************
with shpCanvas(1).CanvasItems
    .AddShape 92, 5, 5, 50,50
    .AddShape 93, 5, 75, 50,50
    .AddShape 94, 85, 5, 50,50
    .AddShape 95, 85, 75, 50,50
end with
shpCanvas(1).Line.Visible = True
 
'*****************************************************
' добавляем фигуры во второе полотно
'*****************************************************
with shpCanvas(2).CanvasItems
    .AddShape 105, 5, 5, 50,50
    .AddShape 106, 5, 75, 50,50
    .AddShape 107, 85, 5, 50,50
    .AddShape 108, 85, 75, 50,50
end with
shpCanvas(2).Line.Visible = True
 
'*****************************************************
' добавляем фигуры в третье полотно
'*****************************************************
with shpCanvas(3).CanvasItems
    .AddTextEffect 6, "Текст 1", "Times New Roman", 17, false, false, 5, 5
    .AddTextEffect 7, "Текст 2", "Times New Roman", 17, false, false, 5, 35
    .AddTextEffect 8, "Текст 3", "Times New Roman", 17, false, false, 5, 65
    .AddTextEffect 9, "Текст 4", "Times New Roman", 17, false, false, 5, 95
end with
shpCanvas(3).Line.Visible = True
 
'*****************************************************
' добавляем фигуры в четвертое полотно
'*****************************************************
with shpCanvas(4).CanvasItems
    .AddCallout 1, 20, 5, 40, 40
    .AddCallout 2, 20, 75, 40, 40
    .AddCallout 3, 85, 5, 40, 40
    .AddCallout 4, 85, 75, 40, 40
end with
shpCanvas(4).Line.Visible = True
// ********************************************************************
// Коллекция Word CanvasShapes
// Word работа с графическими объектами
// CanvasShapes.js
// ********************************************************************
 
var oWord, oDoc, shpCanvas;
 
oWord = WScript.CreateObject("Word.Application");        // ссылка на объект Word Application
oDoc = oWord.Documents;                                            // ссылка на коллекцию Documents
oDoc.Add();
oWord.Visible = true;
shpCanvas = oDoc(1).Shapes;                                        // ссылка на коллекцию Shapes
 
//*****************************************************
// добавляем в документ четыри полотна
//*****************************************************
shpCanvas.AddCanvas(10, 10, 140, 140);
shpCanvas.AddCanvas(160, 10, 140, 140);
shpCanvas.AddCanvas(10, 160, 140, 140);
shpCanvas.AddCanvas(160, 160, 140, 140);
 
//*****************************************************
// добавляем фигуры в первое полотно
//*****************************************************
with (shpCanvas(1).CanvasItems){
    AddShape(92, 5, 5, 50,50);
    AddShape(93, 5, 75, 50,50);
    AddShape(94, 85, 5, 50,50);
    AddShape(95, 85, 75, 50,50);
}
shpCanvas(1).Line.Visible = true
 
//*****************************************************
// добавляем фигуры во второе полотно
//*****************************************************
with (shpCanvas(2).CanvasItems){
    AddShape(105, 5, 5, 50,50);
    AddShape(106, 5, 75, 50,50);
    AddShape(107, 85, 5, 50,50);
    AddShape(108, 85, 75, 50,50);
}
shpCanvas(2).Line.Visible = true
 
//*****************************************************
// добавляем фигуры в третье полотно
//*****************************************************
with (shpCanvas(3).CanvasItems){
    AddTextEffect(6, "Текст 1", "Times New Roman", 17, false, false, 5, 5);
    AddTextEffect(7, "Текст 2", "Times New Roman", 17, false, false, 5, 35);
    AddTextEffect(8, "Текст 3", "Times New Roman", 17, false, false, 5, 65);
    AddTextEffect(9, "Текст 4", "Times New Roman", 17, false, false, 5, 95);
}
shpCanvas(3).Line.Visible = true
 
//*****************************************************
// добавляем фигуры в четвертое полотно
//*****************************************************
with(shpCanvas(4).CanvasItems){
    AddCallout(1, 20, 5, 40, 40);
    AddCallout(2, 20, 75, 40, 40);
    AddCallout(3, 85, 5, 40, 40);
    AddCallout(4, 85, 75, 40, 40);
}
shpCanvas(4).Line.Visible = true

GroupShapes – Word, работа с графическими объектами

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

Группирование графических объектов Word

Теперь, для сгруппированных фигур мы можем использовать свойство GroupItems, которое позволит обратиться к конкретной фигуре в сгруппированном диапазоне, как к отдельному объекту Shape.

Свойства

Count– Количество фигур в сгруппированном диапазоне. Word работа с графическими объектами.

Методы

Методы Itemи Rangeвыполняют ту же функцию, что и одноименные методы в коллекции Shapes.

Тут я привел только пример кода на языке VBScript, попытка адаптировать пример под язык JScript потерпела неудачу, как метод Range не хочет обрабатывать переданный массив. Видимо, он воспринимает только массив, созданный с помощью функции Array языка VBScript.

' ********************************************************************
' Коллекция Word GroupShapes
' Word работа с графическими объектами
' GroupShapes.vbs
' ********************************************************************
 
Option Explicit
 
dim oWord, oDoc, shpCanvas
 
Set oWord = CreateObject("Word.Application")            ' ссылка на объект Word Application
Set oDoc = oWord.Documents                                    ' ссылка на коллекцию Documents
oDoc.Add()
oWord.Visible = true
Set shpCanvas = oDoc(1).Shapes                                ' ссылка на коллекцию Shapes
 
'*****************************************************
' добавляем в документ три фигуры
'*****************************************************
shpCanvas.AddShape 92, 50, 50, 50,50
shpCanvas.AddShape 106, 50, 150, 50,50
shpCanvas.AddShape 42, 155, 70, 50,50
 
' группируем созданные фигуры
' на выходе получим общий объект Shape
shpCanvas.Range(Array(shpCanvas(1).Name, shpCanvas(2).Name, shpCanvas(3).Name)).Group
' заполняем все фигуры текстурой
shpCanvas(1).Fill.PresetTextured 17
' заполняем вторую фигуру в группе текстурой
shpCanvas(1).GroupItems(2).Fill.PresetTextured 9

ShapeRange – Word, работа с графическими объектами

Объект ShapeRange включает в себя выбранные фигуры, и, по сути, является дубликатом объекта Shape, только не для одной конкретной фигуры, а для диапазона фигур.

Работа с выбранными фигурами в Word

Для работы с графическими объектами Word с помощью данного объекта,  мы сначала должны добавить в документ несколько фигур с помощью методов объекта Shapes, а потом выбрать их с помощью метода Range, выбранные фигуры будут представлять объект ShapeRange. По сути, мы сможем обрабатывать выбранные фигуры как одно целое.

Большая часть свойств и методов заимствованы из объекта Shape, поэтому я не стал их описывать.

Свойства

Count — Возвращает количество выбранных фигур. Только чтение

Adjustments, Fill, Glow, GroupItems, Hyperlink, Line, Nodes, ParentGroup, PictureFormat, Reflection, Shadow, SoftEdge, TextEffect, TextFrame, ThreeD, WrapFormat

Height, Width, HeightRelative, WidthRelativ, HorizontalFlip, VerticalFlip, ID, LayoutInCell,  Left, Top, TopRelative, LeftRelative, LockAspectRatio, Name, RelativeHorizontalPosition, RelativeVerticalPosition, RelativeHorizontalSize, RelativeVerticalSize, Rotation, ShapeStyle, Title, Type, Vertices, Visible, ZorderPosition

Методы

Align(Align, RelativeTo) — Выравнивание фигур в указанном диапазоне.

Align — Определяет способ выравнивания фигуры в указанном диапазоне. Значения константы MsoAlignCmd:

  • msoAlignLefts — 0 — Выровнять по левому краю.
  • msoAlignCenters — 1 — Выровнять по центру.
  • msoAlignRights — 2 – Выровнять по правому краю.
  • msoAlignTops — 3 — Выровнять по верхнему краю.
  • msoAlignMiddles — 4 — Выровнять по середине.
  • msoAlignBottoms — 5 — Выровнять по нижнему краю.

RelativeTo — True — чтобы выравнивать фигуры по отношению к краю документа. False — выравнивать фигуры относительно друг друга. Работа с графическими объектами в Word.

Delete() — Удаляет указанный диапазон фигур.

Distribute(Distribute, RelativeTo) — Равномерно распределяет фигуры в указанном диапазоне.

Distribute — Указывает, следует ли распространять графические объекты горизонтально или вертикально. Значение константы MsoDistributeCmd:

  • msoDistributeHorizontally — 0 — Распределить по горизонтали.
  • msoDistributeVertically — 1 — Распределить по вертикали.

Group() – Группирует выбранные фигуры.

Item(index) — Возвращает отдельный объект Shape в коллекции.

Apply, CanvasCropBottom, CanvasCropLeft, CanvasCropRight, CanvasCropTop, Flip, Duplicate, IncrementLeft, IncrementTop, IncrementRotation, PickUp, Ungroup, SetShapesDefaultProperties, ScaleWidth, ZOrder, Select

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

' ********************************************************************
' Объект Word ShapeRange
' Word работа с графическими объектами
' ShapeRange.vbs
' ********************************************************************
 
Option Explicit
 
dim oWord, oDoc, shpCanvas
 
Set oWord = CreateObject("Word.Application")            ' ссылка на объект Word Application
Set oDoc = oWord.Documents                                    ' ссылка на коллекцию Documents
oDoc.Add()
oWord.Visible = true
Set shpCanvas = oDoc(1).Shapes                                ' ссылка на коллекцию Shapes
 
'*****************************************************
' добавляем в документ три фигуры
'*****************************************************
shpCanvas.AddShape 92, 20, 20, 50,50
shpCanvas.AddShape 93, 90, 20, 50,50
shpCanvas.AddShape 94, 160, 20, 50,50
shpCanvas.AddShape 95, 250, 20, 50,50
shpCanvas.AddShape 96, 20, 90, 50,50
shpCanvas.AddShape 97, 90, 90, 50,50
shpCanvas.AddShape 98, 160, 90, 50,50
shpCanvas.AddShape 99, 250, 90, 50,50
 
MsgBox "Выравниваем фигуры"
shpCanvas.Range(Array(1,2,3,4,5,6,7,8)).Distribute 0, false
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий