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