Объект Word LineFormat — как сделать линию в ворде

Объект Word LineFormat — как сделать линию в ворде Объектная модель Microsoft Word

Доброго времени суток, с вами автор блога scriptcoding.ru. В этой публикации мы рассмотрим класс LineFormat, который позволяет форматировать линии в ворде для различных графических объектов. Так, мы можем добавить наконечники к концам линии, задать стиль, толщину, цвет и так далее.

Для доступа к объекту LineFormat используется свойство Lineобъекта Shape, который будет представлять графическую фигуру. Важно отметить, что количество доступных свойств объекта LineFormat ограничено типом фигуры – линия в Word, авто-фигура, надпись WordArt и так далее.

LineFormat – сплошная и пунктирная линия в ворде

Свойства — как сделать линию в ворде

сплошная и пунктирная линии в ворд

BeginArrowheadLengthи EndArrowheadLength— Возвращает или устанавливает длину стрелы в начале или в конце линии в ворд. Значения константы MsoArrowheadLength:

  • msoArrowheadShort — 1 — Короткий.
  • msoArrowheadLengthMedium — 2 — Средний.
  • msoArrowheadLong — 3 — Длинный.
  • msoArrowheadLengthMixed — -2 — Комбинированное значение.

BeginArrowheadWidthи EndArrowheadWidth— Возвращает или устанавливает ширину стрелки в начале или в конце ворд линии. Значения константы MsoArrowheadWidth:

  • msoArrowheadNarrow — 1 — Узкий.
  • msoArrowheadWidthMedium — 2 — Средний.
  • msoArrowheadWide — 3 — Широкий.
  • msoArrowheadWidthMixed — -2 – Комбинированное значение.

BeginArrowheadStyleи EndArrowheadStyle— Возвращает или устанавливает стиль стрелки в начале или в конце указанной строки. Значения константы MsoArrowheadStyle:

  • msoArrowheadNone — 1 — Нет стрелки.
  • msoArrowheadTriangle — 2 — Стрелка.
  • msoArrowheadOpen — 3 — Открытая стрелка.
  • msoArrowheadStealth — 4 – Вогнутая стрелка.
  • msoArrowheadDiamond — 5 – Ромбовидная стрелка.
  • msoArrowheadOval — 6 – Шарообразная стрелка.
  • msoArrowheadStyleMixed — 2 – Смешанные значения.

DashStyle— Возвращает или задает стиль тире для указанной линии в ворде. Значение константы MsoLineDashStyle:

  • msoLineSolid — 1 – Сплошная линия в ворде.
  • msoLineSquareDot — 2 – Квадратные точки.
  • msoLineRoundDot — 3 – Круглые точки.
  • msoLineDash — 4 — Штрих.
  • msoLineDashDot — 5 – Штрих-пунктирная линия в ворде.
  • msoLineDashDotDot — 6 – Длинные двойные штрих-пунктирные линии в ворде .
  • msoLineLongDash — 7 – Длинный штрих.
  • msoLineLongDashDot — 8 – Длинный штрих-пунктир.
  • msoLineDashStyleMixed — -2 — Не поддерживается.

InsetPen— True – показывает, как нарисовать линию в ворде внутри заданной фигуры.

Style— Возвращает или задает формат стиля, который будет содержать линия в Word. Значение константы MsoLineStyle:

  • msoLineSingle — 1 — одна сплошная линия в ворд.
  • msoLineThinThin — 2 — Две сплошные тонкие линии в Word.
  • msoLineThinThick — 3 – Толстая (внизу) и тонкая сплошные линии в ворде.
  • msoLineThickThin — 4 — Толстая (вверху) и тонкая сплошные линии ворд.
  • msoLineThickBetweenThin — 5 — Толстые сплошные линии Word с тонкой линией с каждой стороны.
  • msoLineStyleMixed — -2 — Не поддерживается.

Transparency— Возвращает или задает степень прозрачности линии ворд. Значение от 0,0 до 1,0.

Visible– Включить (true) или отключить (false) видимость ворд линии.

Weight— Возвращает или задает толщину указанной линии в ворде в пунктах.

Свойства-объекты и свойства-коллекции – как нарисовать линию в ворде

как в ворде сделать линию

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

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

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

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

Пример на VBScript:

' ********************************************************************
' Объект LineFormat
' сплошная и пунктирная линия в ворде - форматирование
' LineFormat.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
 
'--------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            как нарисовать линию в ворде
dim iCount
iCount = 20
for i = 1 to 6
    shpCanvas.AddLine iCount, 30, iCount + 50, 30
    iCount = iCount + 80
next
 
for i = 1 to 6
     With shpCanvas(i).Line
                 .BeginArrowheadStyle = i
                 .EndArrowheadStyle = (i-7)*(-1)
                 .ForeColor.RGB = RGB(128,0,0)
     End With
next
 
for i = 1 to 3
     With shpCanvas(i).Line
                 .BeginArrowheadLength = i
                 .EndArrowheadLength = (i-4)*(-1)
     End With
next
 
iCount = 1
for i = 4 to 6
     With shpCanvas(i).Line
                 .BeginArrowheadWidth = iCount
                 .EndArrowheadWidth = (iCount - 4)*(-1)
     End With
    iCount = iCount + 1
next
 
'--------------------------------------------------------------------------------------
dim iCount1
iCount1 = 20
for i = 1 to 4
    shpCanvas.AddLine iCount1, 60, iCount1 + 100, 60
    iCount1 = iCount1 + 130
next
iCount1 = 20
for i = 1 to 4
    shpCanvas.AddLine iCount1, 80, iCount1 + 100, 80                                                                                                                                                                                                                                    ' линии в Word
    iCount1 = iCount1 + 130
next
 
iCount1 = 1
for i = 7 to 14
     With shpCanvas(i).Line
                 .DashStyle = iCount1
                 .Weight = 2
     End With
    iCount1 = iCount1 + 1
next
 
'--------------------------------------------------------------------------------------
dim iCount2
iCount2 = 20
for i = 1 to 5
    shpCanvas.AddLine iCount2, 100, iCount2 + 70, 100
    iCount2 = iCount2 + 100
next
 
iCount2 = 1
for i = 15 to 19
     With shpCanvas(i).Line
                 .Style = iCount2
                 iCount2 = iCount2 + 1
                 .Weight = 5
                 .Visible = true
     End With
next
 
'-----------------------------------------------------------------------
dim iCount3
iCount3 = 10
for i = 1 to 8
    shpCanvas.AddShape 1, iCount3, 130, 60, 60
    iCount3 = iCount3 + 70
next
iCount3 = 1
for i =20 to 27
     With shpCanvas(i).Line
                 .ForeColor.RGB = RGB(0,0,255)
                 .DashStyle = iCount3
                 .Weight = 2
     End With
    iCount3 = iCount3 + 1
next
 
'-----------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          как сделать линию в ворде
dim iCount4
iCount4 = 10
for i = 1 to 5
    shpCanvas.AddShape 1, iCount4, 200, 60, 60
    iCount4 = iCount4 + 70
next
iCount4 = 1
for i =28 to 32
     With shpCanvas(i).Line
                 .ForeColor.RGB = RGB(255,168,0)
                 .Style = iCount4
                 .Weight = 2
     End With
    iCount4 = iCount4 + 1
next

Пример на JScript:

// ********************************************************************
// Объект LineFormat
// пунктирная и сплошная линия в ворде - форматирование
// LineFormat.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
 
//--------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          как нарисовать линию в ворде
var iCount5;
iCount5 = 20;
for(i = 1; i<=6; i++){
    shpCanvas1.AddLine(iCount5, 30, iCount5 + 50, 30);
    iCount5 += 80;
}
 
for(i = 1; i<=6; i++){
     with(shpCanvas1(i).Line){
                 BeginArrowheadStyle = i;
                 EndArrowheadStyle = (i-7)*(-1);
                 ForeColor.RGB = rgbToHex(128,0,0);
     }
}
 
for(i = 1; i<=3; i++){
     with(shpCanvas1(i).Line){   
                 BeginArrowheadLength = i;
                 EndArrowheadLength = (i-4)*(-1);
     }
}
 
iCount5 = 1;
for(i = 4; i<=6; i++){
     with(shpCanvas1(i).Line){   
                 BeginArrowheadWidth = iCount5;
                 EndArrowheadWidth = (iCount5 - 4)*(-1);
     }
    iCount5 ++;
}
 
//--------------------------------------------------------------------------------------
var iCount6;
iCount6 = 20;
for(i = 1; i<=4; i++){
    shpCanvas1.AddLine(iCount6, 60, iCount6 + 100, 60);
    iCount6 += 130;
}
iCount6 = 20;
for(i = 1; i<=4; i++){
    shpCanvas1.AddLine(iCount6, 80, iCount6 + 100, 80);                                                                                                                                                                                                                                    // линии в Word
    iCount6 += 130;
}
 
iCount6 = 1;
for(i = 7; i<=14; i++){
    shpCanvas1(i).Line.DashStyle = iCount6;
    shpCanvas1(i).Line.Weight = 2;
    iCount6 ++;
}
 
//--------------------------------------------------------------------------------------
var iCount7;
iCount7 = 20;
for(i = 1; i<=5; i++){
    shpCanvas1.AddLine(iCount7, 100, iCount7 + 70, 100);
    iCount7 += 100;
}
 
iCount7 = 1;
for(i = 15; i<=19; i++){
     with(shpCanvas1(i).Line){
                 Style = iCount7;
                 iCount7 ++;
                 Weight = 5;
                 Visible = true;
     }
}
 
//-----------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              как сделать линию в ворде
var iCount8;
iCount8 = 10;
for(i = 1; i<=8; i++){
    shpCanvas1.AddShape(1, iCount8, 130, 60, 60);
    iCount8 += 70;
}
iCount8 = 1
for(i = 20; i<=27; i++){
     with(shpCanvas1(i).Line){
                 ForeColor.RGB = rgbToHex(0,0,255);
                 DashStyle = iCount8;
                 Weight = 2;
     }
    iCount8 ++;
}
 
//-----------------------------------------------------------------------
var iCount9;
iCount9 = 10;
for(i = 1; i<=5; i++){
    shpCanvas1.AddShape(1, iCount9, 200, 60, 60);
    iCount9 += 70;
}
iCount9 = 1;
for(i = 28; i<=32; i++){
     with(shpCanvas1(i).Line){
                 ForeColor.RGB = rgbToHex(255,168,0);
                 Style = iCount9;
                 Weight = 2;
     }
    iCount9 ++;
}
 
//*****************************************************
// Функция преобразования 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, в который добавляются различные объекты Shape – линии и фигуры. Далее происходит форматирование данных графических объектов, а именно – применяются различные стили, меняется толщина и цвет, и так далее. Во втором сценарии на языке jscript, для того, что бы задать цвет линии в Word, пришлось написать дополнительную функцию rgbToHex, так как у языка jscript нет встроенной функции RGB, которая позволила бы задать цвет.

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