Объект CalloutFormat позволяет редактировать выноски в Word документе. Так, мы можем изменить тип уже существующей выноски, отформатировать линию, которая находится рядом с выноской Word, и многое другое…
В первую очередь, нам нужно добавить новую выноску в Word, для этого используется метод AddCallout объекта Shapes. Далее у нас есть два варианта, или же мы создаем новую переменную, которая будет хранить ссылку на объект CalloutFormat, или же мы просто обрабатываем новую выноску на прямую. Сам доступ к объекту CalloutFormat формируется через свойство Callout объекта Shape, который будет представлять нужную выноску Word.
CalloutFormat — Выноски в Word
Свойства
Accent– Свойство содержит логические значения, которые определяют, крепить (true) к выноске линию или нет (false).
Angle— Возвращает или задает угол линии выноски. Значение константы MsoCalloutAngleType:
- msoCalloutAngleAutomatic — 1 — По умолчанию. Угол может быть изменен при перетаскивании фигуры.
- msoCalloutAngle30 — 2 — 30 градусов.
- msoCalloutAngle45 — 3 — 45 градусов.
- msoCalloutAngle60 — 4 — 60 градусов.
- msoCalloutAngle90 — 5 — 90 градусов.
- msoCalloutAngleMixed — -2 – Только для чтения, комбинация из двух значений.
Application— Возвращает объект Application, представляющий приложение Microsoft Word.
AutoLength— Свойство содержит логические значения, которые определяют, автоматически (false) задавать длину линии выноски в Word или нет (false). Только чтение.
Border– Включить (true) или отключить (false) границы для текста. Чтение и запись.
Drop— Возвращает вертикальное расстояние в пунктах от края выноски к текстовому полю. Только чтение.
Gap— Возвращает или задает горизонтальное расстояние в пунктах между концом линии выноски и рамки, ограничивающей текст.
DropType— Возвращает значение, указывающее, где расположены линии выноски. Только чтение, значение константы MsoCalloutDropType:
- msoCalloutDropCustom — 1 – Обычное расположение.
- msoCalloutDropTop — 2 — Вверху.
- msoCalloutDropCenter — 3 — Центр.
- msoCalloutDropBottom — 4 — Внизу.
- msoCalloutDropMixed — -2 – Комбинация из двух значений.
Length— Возвращает длину в пунктах из первого сегмента линии выноски в word (сегмент прилагается к блоку текста выноски). Только чтение.
Type— Возвращает или задает тип выноски. Значение константы MsoCalloutType:
- msoCalloutOne — 1 – Горизонтальная линия слева.
- msoCalloutTwo — 2 – Горизонтальна линия с наклоном слева.
- msoCalloutThree — 3 – Линия состоит из двух отрезков слева (один отрезок с наклоном, а другой горизонтальный).
- msoCalloutFour — 4 — Линия состоит из трех отрезков справа (один отрезок с наклоном, другой горизонтальный и третий вертикальный).
Методы
CustomDrop(Drop) — Устанавливает вертикальное расстояние (в пунктах) от края текста ограниченного рамкой до места, где линии выноски прикрепляются к текстовому полю.
CustomLength(Length) — Задает длину первого сегмента линии выноски Word в пунктах.
PresetDrop(DropType) – Метод позволяет задать расположение линии выноски. Параметр содержит значения константы MsoCalloutDropType (смотрите выше).

Что бы добавить выноски в Word 2007 вручную, нужно перейти на вкладку Вставка, панель Иллюстрации, и выбрать пункт Фигуры. В открывшемся списке можно выбрать подходящую выноску.
' ******************************************************************** ' Объект Word CalloutFormat ' Выноски в Word ' CalloutFormat.vbs ' ******************************************************************** Option Explicit dim oWord, oDoc, shpCanvas, i Set oWord = CreateObject("Word.Application") ' ссылка на объект Word Application Set oDoc = oWord.Documents ' ссылка на коллекцию Documents oDoc.Add() oWord.Visible = true Set shpCanvas = oDoc(1).Shapes ' ссылка на коллекцию Shapes '***************************************************** ' добавляем в документ четыри выноски '***************************************************** shpCanvas.AddCallout 1, 80, 50, 100, 100 shpCanvas.AddCallout 2, 250, 50, 100, 100 shpCanvas.AddCallout 3, 80, 200, 100, 100 shpCanvas.AddCallout 4, 250, 200, 100, 100 shpCanvas(1).TextFrame.TextRange.Text = "Выноска 1" shpCanvas(2).TextFrame.TextRange.Text = "Выноска 2" shpCanvas(3).TextFrame.TextRange.Text = "Выноска 3" shpCanvas(4).TextFrame.TextRange.Text = "Выноска 4" & vbCrLf & shpCanvas(4).Callout.Drop & " пунктов" ' для четвертой выноски в Word определяем горизонтальное расстояние shpCanvas(4).Callout.Gap = 30 ' делаем видимой рамку для всех выносок for i = 1 to 4 shpCanvas(i).Callout.Border = true next '***************************************************** ' форматируем 1, 2 и 3 выноски '***************************************************** shpCanvas(1).Callout.PresetDrop 2 shpCanvas(2).Callout.CustomDrop 30 shpCanvas(3).Callout.CustomLength 60 |
// ******************************************************************** // Объект Word CalloutFormat // Выноски в Word // CalloutFormat.js // ******************************************************************** var oWord, oDoc, shpCanvas, i; oWord = WScript.CreateObject("Word.Application"); // ссылка на объект Word Application oDoc = oWord.Documents; // ссылка на коллекцию Documents oDoc.Add(); oWord.Visible = true; shpCanvas = oDoc(1).Shapes; // ссылка на коллекцию Shapes //***************************************************** // добавляем в документ четыри выноски //***************************************************** shpCanvas.AddCallout(1, 80, 50, 100, 100); shpCanvas.AddCallout(2, 250, 50, 100, 100); shpCanvas.AddCallout(3, 80, 200, 100, 100); shpCanvas.AddCallout(4, 250, 200, 100, 100); shpCanvas(1).TextFrame.TextRange.Text = "Выноска 1"; shpCanvas(2).TextFrame.TextRange.Text = "Выноска 2"; shpCanvas(3).TextFrame.TextRange.Text = "Выноска 3"; shpCanvas(4).TextFrame.TextRange.Text = "Выноска 4" + "\n" + shpCanvas(4).Callout.Drop + " пунктов"; // для четвертой выноски в Word определяем горизонтальное расстояние shpCanvas(4).Callout.Gap = 30; // делаем видимой рамку для всех выносок for(i = 1; i<=4; i++){ shpCanvas(i).Callout.Border = true; } //***************************************************** // форматируем 1, 2 и 3 выноски //***************************************************** shpCanvas(1).Callout.PresetDrop(2); shpCanvas(2).Callout.CustomDrop(30); shpCanvas(3).Callout.CustomLength(60); |
В данных примерах на языках vbscript и jscript происходит создание нового документа Word. Вначале мы объявляем нужные переменные, которые будут хранить как значения, так и ссылки на объекты или коллекции. Далее с помощью метода AddCallout объекта Shapes мы добавляем в документ 4 выноски Word, они будут размещаться по две в ряд, после, происходит их форматирование – делаем видимой рамку, изменяем положение и отступы, ну… ничего сложного.