Объект Word FillFormat — Заливка фигур

Объект Word FillFormat — Заливка фигур Объектная модель Microsoft Word

Всем привет, с вами автор блога scriptcoding.ru. Сегодня мы рассмотрим работу с классом FillFormat объектной модели Word, который отвечает за заливку графических фигур.

Объект FillFormat определяет параметры заливки в ворде для графических фигур. Он позволяет определять формат заливки в ворде с помощью заданного цвета, с помощью градиента, заданного шаблона или стиля. Доступ к классу осуществляется через свойство Fill объекта Shape. Стоит учитывать, что примеры для данной статьи я тестировал на версии Word 2007, и поэтому, мне пришлось опустить некоторые свойства класса FillFormat, так как они доступны начиная с версии 2010.

Класс FillFormat – заливка в ворде

Свойства – как сделать заливку в ворде

делаем заливку в word

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

BackColor— Вернет или определит класс ColorFormat, представляющий цвет фона для заливки Word.

ForeColor— Возвращает или задает объект ColorFormat, представляющий цвет переднего плана для заливки в ворде.

GradientStops— Вернет коллекцию GradientStops, связанную с указанным форматом заполнения. Начиная с версии 2010.

PictureEffects— Вернет объект PictureEffects, который может использоваться для применения изображения в качестве заливки в ворде. Начиная с версии 2010.

GradientAngle— Возвращает или задает угол градиентной заливки. Начиная с версии 2010.

GradientColorType— Возвращает тип градиента для указанной заливки в Word. Только чтение, значения константы MsoGradientColorType:

  • msoGradientColorMixed — -2 – Смешанные цвета заливки в ворде.
  • msoGradientOneColor — 1 – Один цвет заливки в ворде.
  • msoGradientTwoColors — 2 – Два цвета заливки в Word.
  • msoGradientPresetColors — 3 – Цвет градиента устанавливается в соответствии со значение константы msoPresetGradientType.

GradientStyle— Возвращает стиль штриховки градиента для заливки в ворде. Только чтение, значение константы MsoGradientStyle.

GradientVariant— Возвращает вариант градиента для указанной заливки word как целое значение от 1 до 4.

Pattern— Возвращает значение константы MsoPatternType, представляющей шаблон, который использует заливка в Word.

PresetGradientType— Возвращает заданный тип градиента для указанной заливки в ворде. Значения константы MsoPresetGradientType.

PresetTexture— Вернет заданную текстуру для указанной заливки. Значения константы MsoPresetTexture.

RotateWithObject— Возвращает или устанавливает, вращается ли заливка с заданной формы. Чтение / запись. !!!!2010

TextureAlignment— Возвратит или задаст выравнивание (происхождение координатной сетки) для плитки от заполнения текстур. Начиная с версии 2010.

TextureHorizontalScaleи TextureVerticalScale— Возвращает или задает значение, определяющее коэффициент горизонтального или вертикального масштабирования для заполнения текстур. Начиная с версии 2010.

TextureName— Имя файла пользовательской текстуры для указанной заливки ворд.

TextureOffsetXи TextureOffsetY— Задает значение, которое определяет горизонтальное или вертикальное смещение текстуры от начала координат в пунктах. Чтение и запись.

TextureTile— Значение, указывающее положение текстуры заливки в Word плиткой или по центру. Чтение и запись. Начиная с версии 2010.

TextureType— Тип текстуры для указанной ворд заливки. Значение константы MsoTextureType:

  • msoTextureTypeMixed — -2 – Смешанные значение.
  • msoTexturePreset — 1 – Указать тип текстуры.
  • msoTextureUserDefined — 2 — Пользователь определяет тип текстуры.

Transparency— Степень прозрачности, значение от 0,0 (непрозрачный) до 1.0 (прозрачный). Запись и чтение.

Type— Тип формата заполнения. Только чтение, значение константы MsoFillType:

  • msoFillMixed — -2 – Смешанная заливка в Word.
  • msoFillSolid — 1 — Сплошная заливка.
  • msoFillPatterned — 2 – Заливка по образцу.
  • msoFillGradient — 3 — Градиентная заливка.
  • msoFillTextured — 4 — Текстурированная заливка.
  • msoFillBackground — 5 – Заливка Word такая же, как на заднем плане.
  • msoFillPicture — 6 – Заливка с помощью изображения.

Visible– Свойство позволяет включить (true) или отключить (false) заливку в Word.

Методы – заливка в word

как сделать в ворде заливку

OneColorGradient(Style, Variant, Degree) — Устанавливает градиент, состоящий из одного цвета заливки в ворде.

Style — Стиль градиента. Значение константы MsoGradientStyle:

  • msoGradientMixed — -2 — Смешанный градиент.
  • msoGradientHorizontal — 1 – Переход по горизонтали.
  • msoGradientVertical — 2 – Переход по вертикали.
  • msoGradientDiagonalUp — 3 — Переход от нижнего угла до противоположного угла по диагонали.
  • msoGradientDiagonalDown — 4 — Переход от верхнего угла до противоположного угла по диагонали.
  • msoGradientFromCorner — 5 — Переход с угла к трем другим углам.
  • msoGradientFromTitle — 6 — Переход от углов к центру.
  • msoGradientFromCenter — 7 – Переход от центра к углам.

Variant – Вариант градиента. Может иметь значение от 1 до 4, в соответствии с четырьмя вариантами на вкладке «Градиент» в диалоговом окне «Способы заливки». Если свойство Style установлено в 7, то этот аргумент может быть 1 или 2.

Degree — Степень градиента. Может иметь значение от 0,0 (темный) до 1,0 (светлый).

TwoColorGradient(Style, Variant) — Устанавливает градиент, состоящий из двух цветов для заливки в Word.

PresetGradient(Style, Variant, PresetGradientType) — Устанавливает заданную заготовку для градиента.

PresetGradientType – Тип заготовки, значения константы MsoPresetGradientType.

PresetTextured(PresetTexture) — Устанавливает заданную заливку заданной текстурой. Параметр принимает значения константы MsoPresetTexture.

Patterned(Pattern) — Устанавливает заданный узор, который будет использовать заливка в Word. Параметр принимает значение константы MsoPatternType.

Solid — Устанавливает заданную заливку Word равномерным цветом. .

UserPicture(PictureFile) — Заполняет заданную форму одним большим изображением. Параметр определяет путь к файлу и его имя.

UserTextured(TextureFile) — Заполняет заданную фигуру небольшими плитками изображения. Параметр определяет путь к файлу и его имя.

Хорошо, с теорией мы разобрались, теперь настало время приступить к программированию. Я приведу примеры программного кода для языков VBScript и JScript, которые работают под управлением сервера Windows Script Host.

Программный код на языке VBSCRIPT:

заливка в ворд цветом
цвета для заливки в ворд
' ********************************************************************
' Класс FillFormat - заливка в ворде
' FillFormat.vbs
' ********************************************************************
 
Option Explicit
 
dim oWord, oDoc, shpCanvas, i
 
Set oWord = CreateObject("Word.Application")            ' ссылка на Application
Set oDoc = oWord.Documents                                    ' ссылка на Documents
oDoc.Add()
oWord.Visible = true
Set shpCanvas = oDoc(1).Shapes                                ' ссылка на Shapes
 
'*****************************************************
' добавляем в документ три различные фигуры
'*****************************************************
With shpCanvas
     .AddCallout 3, 80, 10, 50, 50
     .AddShape  101, 200, 10, 50, 50
     .AddTextEffect  1, "Заливка в Word", "Times New Roman", 20, false, false, 300, 10
End With
 
'*****************************************************
' Определяем цвет заливки в ворде для первых 3-х фигур
'*****************************************************
 
MsgBox RGB(128,0,93)
 
With shpCanvas(1).Fill
     .ForeColor.RGB = RGB(0,0,128)
     .Visible = true
End With
With shpCanvas(2).Fill
     .ForeColor.RGB = RGB(128,0,93)
     .Visible = true
End With
With shpCanvas(3).Fill
     .ForeColor.RGB = RGB(128,102,0)
     .Visible = true
End With
 
'--------------------------------------------------------------------------------
dim iCount
 
iCount = 10
for i = 1 to 7
    shpCanvas.AddShape 101, iCount, 70, 50, 50
    iCount = iCount + 80
next
 
iCount = 1
for i =4 to 10
     With shpCanvas(i).Fill
                 .OneColorGradient iCount, 2, 0
                 .ForeColor.RGB = RGB(50 + iCount*20,10 + iCount*20,255)
                 .Visible = true
     End With
    iCount = iCount + 1
next
 
'--------------------------------------------------------------------------------                     
dim iCount1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ' убрать заливку текста в ворде
iCount1 = 10
for i = 1 to 7
    shpCanvas.AddShape 101, iCount1, 130, 50, 50
    iCount1 = iCount1 + 80
next
 
iCount1 = 1
for i =11 to 17
     With shpCanvas(i).Fill
                 .TwoColorGradient iCount1, 2
                 .BackColor.RGB = RGB(275 - iCount1*20 ,0,0)
                 .ForeColor.RGB = RGB(50 + iCount1*20,0,255)
                 .Visible = true
     End With
    iCount1 = iCount1 + 1
next
 
'--------------------------------------------------------------------------------
dim iCount2
iCount2 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount2, 200, 40, 40                                                                                                                                                                                                                                                                                                   
    iCount2 = iCount2 + 45
next
 
iCount2 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount2, 250, 40, 40
    iCount2 = iCount2 + 45
next
 
iCount2 = 1
for i =18 to 41
     With shpCanvas(i).Fill
                 .PresetGradient 3, 2, iCount2
                 .Visible = true
     End With
    iCount2 = iCount2 + 1
next
 
'--------------------------------------------------------------------------------                                            
dim iCount3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ' как убрать заливку в ворде
iCount3 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount3, 310, 40, 40
    iCount3 = iCount3 + 45
next
 
iCount3 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount3, 360, 40, 40
    iCount3 = iCount3 + 45
next
 
iCount3 = 1
for i =42 to 65
     With shpCanvas(i).Fill
                 .PresetTextured iCount3
                 .Visible = true
     End With                   
    iCount3 = iCount3 + 1
next
 
'--------------------------------------------------------------------------------
dim iCount4
iCount4 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount4, 420, 40, 40
    iCount4 = iCount4 + 45
next
 
iCount4 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount4, 470, 40, 40
    iCount4 = iCount4 + 45
next
 
iCount4 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount4, 520, 40, 40
    iCount4 = iCount4 + 45
next
 
dim iCount5
iCount5 = 10
for i = 1 to 12
    shpCanvas.AddShape 1, iCount5, 570, 40, 40
    iCount5 = iCount5 + 45
next
 
iCount5 = 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ' как сделать заливку в ворде
for i =66 to 113
     With shpCanvas(i).Fill
                 .ForeColor.RGB = RGB(0,153,253)
                 .Patterned iCount5
                 .Visible = true
     End With
    iCount5 = iCount5 + 1
next

Программный код на языке JSCRIPT:

заливка в ворд фона
как в ворде убрать заливку
// ********************************************************************
// Класс FillFormat - заливка в ворде
// FillFormat.js
// ********************************************************************
 
var oWord1, oDoc1, shpCanvas1, i;
 
oWord1 = WScript.CreateObject("Word.Application");        // ссылка на Application
oDoc1 = oWord1.Documents;                                            // ссылка на Documents
oDoc1.Add();
oWord1.Visible = true;
shpCanvas1 = oDoc1(1).Shapes;                                        // ссылка на Shapes
 
//*****************************************************
// добавляем в документ три различные фигуры
//*****************************************************
with(shpCanvas1){
     AddCallout(3, 80, 10, 50, 50);
     AddShape(101, 200, 10, 50, 50);
     AddTextEffect(1, "Заливка в Word", "Times New Roman", 20, false, false, 300, 10);
}
 
//*****************************************************
// Определяем цвет заливки в ворде для первых 3-х фигур
//*****************************************************
with(shpCanvas1(1).Fill){
     ForeColor.RGB = rgbToHex(0,0,128);
     Visible = true;
}
with(shpCanvas1(2).Fill){
     ForeColor.RGB = rgbToHex(128,0,93);
     Visible = true;
}
with(shpCanvas1(3).Fill){
     ForeColor.RGB = rgbToHex(128,102,0);
     Visible = true;
}
 
//--------------------------------------------------------------------------------                               
var iCount6;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               // убрать заливку текста в ворде
iCount6 = 10;
for(i = 1; i<=7; i++){
    shpCanvas1.AddShape(101, iCount6, 70, 50, 50);
    iCount6 += 80;
}
 
iCount6 = 1;
for(i = 4; i<=10; i++){
     with(shpCanvas1(i).Fill){
                 OneColorGradient(iCount6, 2, 0);
                 ForeColor.RGB = rgbToHex(50 + iCount6*20,10 + iCount6*20,255);
                 Visible = true;
     }
    iCount6 ++;
}
 
//--------------------------------------------------------------------------------
var iCount7;
iCount7 = 10;
for(i = 1; i<=7; i++){
    shpCanvas1.AddShape(101, iCount7, 130, 50, 50);
    iCount7 += 80;
}
 
iCount7 = 1;
for(i = 11; i<=17; i++){
     with(shpCanvas1(i).Fill){
                 TwoColorGradient(iCount7, 2);
                 BackColor.RGB = rgbToHex(275 - iCount7*20 ,0,0);
                 ForeColor.RGB = rgbToHex(50 + iCount7*20,0,255);
                 Visible = true;
     }
    iCount7 ++;
}
 
//--------------------------------------------------------------------------------
var iCount8;
iCount8 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount8, 200, 40, 40);
    iCount8 += 45;
}
iCount8 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount8, 250, 40, 40);                                                                                                                                                                                                                                                            // как убрать заливку в ворде
    iCount8 += 45;
}
 
iCount8 = 1;
for(i = 18; i<=41; i++){
     with(shpCanvas1(i).Fill){
                 PresetGradient(3, 2, iCount8);
                 Visible = true;
     }
    iCount8 ++;
}
 
//--------------------------------------------------------------------------------
var iCount9;
iCount9 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount9, 310, 40, 40);
    iCount9 += 45;
}
iCount9 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount9, 360, 40, 40);
    iCount9 += 45;
}
 
iCount9 = 1;
for(i = 42; i<=65; i++){
     with(shpCanvas1(i).Fill){
                 PresetTextured(iCount9);
                 Visible = true;
     }
    iCount9 ++;
}
 
//--------------------------------------------------------------------------------
var iCount10;
iCount10 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount10, 420, 40, 40);
    iCount10 += 45;
}
iCount10 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount10, 470, 40, 40);
    iCount10 += 45;
}
iCount10 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount10, 520, 40, 40);
    iCount10 += 45;
}
var iCount11;
iCount11 = 10;
for(i = 1; i<=12; i++){
    shpCanvas1.AddShape(1, iCount11, 570, 40, 40);
    iCount11 += 45;
}
 
iCount11 = 1
for(i =66; i<=113; i++){
     with(shpCanvas1(i).Fill){
                 ForeColor.RGB = rgbToHex(0,153,253);
                 Patterned(iCount11);
                 Visible = true;
     }
    iCount11 ++
}
 
//*****************************************************
// Функция преобразования RGB цвета в
// десятичное значение
//*****************************************************                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   как сделать заливку в ворде
function rgbToHex (r, g, b){
    r = r.toString(16);
    g = g.toString(16);
    b = b.toString(16);
    if (r.length == 1) r = '0' + r;
    if (g.length == 1) g = '0' + g;
    if (b.length == 1) b = '0' + b;        
    myStr = (b + g + r).toUpperCase()
    return parseInt("0x".concat(myStr))
}

Тут я привел два примера программного кода на языке vbscript и jscript, логика двух сценариев одинакова: происходит создание нового документа Word, а далее следует добавление различных фигур, к ним применяется заливка Word с различными параметрами. Стоит обратить внимание, что для сценария на языке jscript мне пришлось добавить функцию rgbToHex, которая выполняет аналогичные действия, что и функция RGB в языке VBScript или VBA. Дело в том, что язык Jscript не располагает встроенной функцией, которая бы позволила указывать три компонента нужного цвета.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий