Доброго времени суток, с вами автор блога 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, которая позволила бы задать цвет.