Word vba межстрочный интервал

how to check MS Word paragraph line spacing using vba script.
here is code where line spacing are change in paragraph(1).
we add paragraph(1) line space 2.
now how can we get it if we give same paragraph(1) and its gives us 2.

braX's user avatar

braX

11.5k5 gold badges20 silver badges33 bronze badges

asked Sep 11, 2018 at 12:16

Umair Khan's user avatar

4

To check line spacing: Selection.ParagraphFormat.LineSpacing

Te increase line spacing Selection.ParagraphFormat.LineSpacing = .LineSpacing + 1

Te decrease line spacing Selection.ParagraphFormat.LineSpacing = .LineSpacing - 1

thanks.

answered Sep 17, 2018 at 15:23

Khurshid Alam's user avatar

Record a macro where you change the line setting and then look at the result you get.

If there is any keyword you don’t understand put the cursor on it and press F1, this will bring up the MS Help page for that keyword.

To record a macro you need to have the Developer Tab enabled.

answered Sep 11, 2018 at 14:03

freeflow's user avatar

freeflowfreeflow

4,0933 gold badges10 silver badges17 bronze badges

Макрос для форматирование Word документа (VBA)

Макрос — это набор команд и инструкций, группируемых вместе в виде единой команды для автоматического выполнения задачи. Вы можете записать последовательность действий или создать макрос с нуля, введя код на языке Visual Basic для приложений в редактор Visual Basic.

Постановка задачи: Создать макрос, который будет форматировать текст в соответствии к стандартам Единой конструкторской документации: 14 шрифт Times New Roman, полуторный междустрочный интервал, выравнивание по ширине листа, поля со всех сторон по 2 см.

Чтобы создать и использовать макрос нам нужно настроить наш Word. Для этого нажмем Файл=>Параметры=>Настройка ленты и поставим галочку напротив надписи «Разработчик». Теперь мы можем использовать макросы.

Для создания собственного макроса нужно перейти на вкладку Разработчик и нажать «Макросы», ввести название нашего будущего макроса и нажать «Создать». Откроется окно Microsoft Visual Basic for Applicatios(дальше VBA) в котором можно наполнить макрос кодом.


Sub Marcos()
'
' Marcos Макрос
'
'
End Sub

Теперь перейдем к самому коду. Сначала выделим весь документ, для того чтобы редактировать его.


Sub Marco()

'Выделяем ведь документ
Selection.WholeStory

Изменяем стиль на «Без интервала», чтобы избавиться от междустрочных интервалов.


'Стиль "Без интервала"
Selection.Style = ActiveDocument.Styles("Без интервала")

Приступаем к функциям форматирования текста. Выравниваем данный нам текст по ширине листа


'Выравнивание по ширине
ActiveDocument.Range.ParagraphFormat.Alignment = wdAlignParagraphJustify

Редактируем шрифт и его размер.


'Изменение шрифта
ActiveDocument.Range.Font.Name = "Times New Roman"

'Изменение размера шрифта
Selection.Font.Size = "14"

Так как междустрочный интервал мы убрали, то теперь можем изменить его на полуторный.


'Изменение междустрочного интервала
ActiveDocument.Range.ParagraphFormat.LineSpacingRule = WdLineSpacing.wdLineSpace1pt5

Для полного выполнения задачи нам не хватает только полей. Делаем поля с каждой стороны по 2 см.


'Изменение полей
'Поле слева
ActiveDocument.Range.PageSetup.LeftMargin = Application.InchesToPoints(0.786)
'Поле справа
ActiveDocument.Range.PageSetup.RightMargin = Application.InchesToPoints(0.786)
'Поле сверху
ActiveDocument.Range.PageSetup.TopMargin = Application.InchesToPoints(0.786)
'Поле снизу
ActiveDocument.Range.PageSetup.BottomMargin = Application.InchesToPoints(0.786)

Завершая помещаем курсор в конец документа, чтобы снять выделение и выводим сообщение, что документ отредактирован.


'Курсор в конец документа
Selection.MoveDown Unit:=wdLine, Count:=1

'отчёт
MsgBox "Документ отредактирован"

End Sub

Наш макрос готов. Чтобы его запустить надо закрыть окно VBA и перейти Разработчик=>Макросы выбрать наш макрос и нажать «Выполнить». Если окно VBA не открылось, не указало вам на ошибку и сообщение об успешном форматировании текста вывелось на экран — значит макрос успешно создан. Теперь сохраните его. Для этого нажмите Файл=>Сохранит как, выберите «Документ Word с поддержкой макросов(*.docm)» и укажите директорию в которую хотите его сохранить.

Автор: Beznoschenko


Похожие публикации

2016-05-26 • Просмотров [ 12281 ]


Автор lyubimov, 06 марта 2019, 22:58

Необходимо изменить форматирование всех таблиц документа.
Макрос, который делает это для выделенной таблицы, у меня есть, а вот как сделать для всех сразу?

С помощью интернета собрал такое решение, но оно не работает. Происходит ошибка в строке For Each myRange In tbl.Range. В ошибке написано: не могу такой метод или свойство применить.

Код

Sub FTables()

‘ FTable Макрос


    Dim myTable As Word.Table
    For Each myTable In ActiveDocument.Tables
        myTable.PreferredWidthType = wdPreferredWidthPercent   ‘Выравнивание по ширине
        myTable.PreferredWidth = 100                           ‘Размер таблицы в процентах
        myTable.TopPadding = CentimetersToPoints(0.1)          ‘Отступ в ячейке сверху
        myTable.BottomPadding = CentimetersToPoints(0.1)       ‘Отступ в ячейке снизу
        myTable.LeftPadding = CentimetersToPoints(0.1)         ‘Отступ в ячейке слева
        myTable.RightPadding = CentimetersToPoints(0.1)        ‘Отступ в ячейке справа
        myTable.Spacing = 0                                    ‘Расстояние между ячейками
        myTable.AllowPageBreaks = True                         ‘Разрешить перенос на сдедующую страницу
        myTable.AllowAutoFit = False                           ‘Разрешить автоподбор по содержимому
        myTable.Rows.HeightRule = wdRowHeightAtLeast           ‘Установить правило высоты строки
        myTable.Rows.Height = CentimetersToPoints(0.04)        ‘Установить высоту строки
        FTable myTable
        Next myTable
End Sub

    Sub FTable(tbl As Table)
    Dim myRange
    For Each myRange In tbl.Range
        myRange.VerticalAlignment = wdCellAlignVerticalTop               ‘Выравнивание текста по вертикали вверх
        myRange.Font.Size = 11                                                 ‘Размер шрифта в пт
        myRange.Font.Name = «Arial»                                            ‘Гарнитура шрифта
        myRange.ParagraphFormat.LeftIndent = CentimetersToPoints(0)            ‘Отступ слева
        myRange.ParagraphFormat.RightIndent = CentimetersToPoints(0)           ‘Отступ справа
        myRange.ParagraphFormat.SpaceBefore = 0                                ‘Интервал до
        myRange.ParagraphFormat.SpaceBeforeAuto = False                        ‘Интервал до автоматически
        myRange.ParagraphFormat.SpaceAfter = 0                                 ‘Интервал после
        myRange.ParagraphFormat.SpaceAfterAuto = False                         ‘Интервал после автоматически
        myRange.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle            ‘Межстрочный интервал — одинарный
        myRange.ParagraphFormat.Alignment = wdAlignParagraphCenter             ‘Выравнивание текста — по центру
        myRange.ParagraphFormat.WidowControl = True                            ‘Запрет висячих строк
        myRange.ParagraphFormat.KeepWithNext = False                           ‘Не отрывать от следующего
        myRange.ParagraphFormat.KeepTogether = False                           ‘Не разрывать абзац
        myRange.ParagraphFormat.PageBreakBefore = False                        ‘С новой страницы
        myRange.ParagraphFormat.NoLineNumber = False                           ‘Запретить нумерацию строк
        myRange.ParagraphFormat.Hyphenation = True                             ‘Запретить автоматичесткий перенос слов
        myRange.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0)       ‘Отступ первой строки
        myRange.ParagraphFormat.OutlineLevel = wdOutlineLevelBodyText          ‘Уровень — основной текст
        myRange.ParagraphFormat.CharacterUnitLeftIndent = 0                    ‘Отступ слева
        myRange.ParagraphFormat.CharacterUnitRightIndent = 0                   ‘Отступ справа
        myRange.ParagraphFormat.CharacterUnitFirstLineIndent = 0               ‘Первая строка
        myRange.ParagraphFormat.LineUnitBefore = 0                             ‘Интервал перед
        myRange.ParagraphFormat.LineUnitAfter = 0                              ‘Интервал после
        myRange.ParagraphFormat.MirrorIndents = False                          ‘Зеркальные отступы
        myRange.ParagraphFormat.TextboxTightWrap = wdTightNone                 ‘Обтекание по контуру
        myRange.ParagraphFormat.CollapsedByDefault = False                     ‘Свернуты по умолчанию
    Next myRange
End Sub

[свернуть]



Администратор

  • Administrator
  • Сообщения: 2,253
  • Записан

В процедуре ‘FTable’ я закомментировал первую строку, т.к. у объекта ‘Range’ нет члена ‘VerticalAlignment’.

Макрос

Sub FTables()

‘ FTable Макрос


    Dim myTable As Word.Table

        For Each myTable In ActiveDocument.Tables
        myTable.PreferredWidthType = wdPreferredWidthPercent   ‘Выравнивание по ширине
        myTable.PreferredWidth = 100                           ‘Размер таблицы в процентах
        myTable.TopPadding = CentimetersToPoints(0.1)          ‘Отступ в ячейке сверху
        myTable.BottomPadding = CentimetersToPoints(0.1)       ‘Отступ в ячейке снизу
        myTable.LeftPadding = CentimetersToPoints(0.1)         ‘Отступ в ячейке слева
        myTable.RightPadding = CentimetersToPoints(0.1)        ‘Отступ в ячейке справа
        myTable.Spacing = 0                                    ‘Расстояние между ячейками
        myTable.AllowPageBreaks = True                         ‘Разрешить перенос на сдедующую страницу
        myTable.AllowAutoFit = False                           ‘Разрешить автоподбор по содержимому
        myTable.Rows.HeightRule = wdRowHeightAtLeast           ‘Установить правило высоты строки
        myTable.Rows.Height = CentimetersToPoints(0.04)        ‘Установить высоту строки
        FTable myTable.Range
    Next myTable

    End Sub

    Sub FTable(myRange As Range)
‘    myRange.VerticalAlignment = wdCellAlignVerticalTop               ‘Выравнивание текста по вертикали вверх
    myRange.Font.Size = 11                                                 ‘Размер шрифта в пт
    myRange.Font.Name = «Arial»                                            ‘Гарнитура шрифта
    myRange.ParagraphFormat.LeftIndent = CentimetersToPoints(0)            ‘Отступ слева
    myRange.ParagraphFormat.RightIndent = CentimetersToPoints(0)           ‘Отступ справа
    myRange.ParagraphFormat.SpaceBefore = 0                                ‘Интервал до
    myRange.ParagraphFormat.SpaceBeforeAuto = False                        ‘Интервал до автоматически
    myRange.ParagraphFormat.SpaceAfter = 0                                 ‘Интервал после
    myRange.ParagraphFormat.SpaceAfterAuto = False                         ‘Интервал после автоматически
    myRange.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle            ‘Межстрочный интервал — одинарный
    myRange.ParagraphFormat.Alignment = wdAlignParagraphCenter             ‘Выравнивание текста — по центру
    myRange.ParagraphFormat.WidowControl = True                            ‘Запрет висячих строк
    myRange.ParagraphFormat.KeepWithNext = False                           ‘Не отрывать от следующего
    myRange.ParagraphFormat.KeepTogether = False                           ‘Не разрывать абзац
    myRange.ParagraphFormat.PageBreakBefore = False                        ‘С новой страницы
    myRange.ParagraphFormat.NoLineNumber = False                           ‘Запретить нумерацию строк
    myRange.ParagraphFormat.Hyphenation = True                             ‘Запретить автоматичесткий перенос слов
    myRange.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0)       ‘Отступ первой строки
    myRange.ParagraphFormat.OutlineLevel = wdOutlineLevelBodyText          ‘Уровень — основной текст
    myRange.ParagraphFormat.CharacterUnitLeftIndent = 0                    ‘Отступ слева
    myRange.ParagraphFormat.CharacterUnitRightIndent = 0                   ‘Отступ справа
    myRange.ParagraphFormat.CharacterUnitFirstLineIndent = 0               ‘Первая строка
    myRange.ParagraphFormat.LineUnitBefore = 0                             ‘Интервал перед
    myRange.ParagraphFormat.LineUnitAfter = 0                              ‘Интервал после
    myRange.ParagraphFormat.MirrorIndents = False                          ‘Зеркальные отступы
    myRange.ParagraphFormat.TextboxTightWrap = wdTightNone                 ‘Обтекание по контуру
    myRange.ParagraphFormat.CollapsedByDefault = False                     ‘Свернуты по умолчанию
End Sub

[свернуть]


Администратор, спасибо, очень помогло.
Немного подкрутив код, получил конечный рабочий вариант.
У объекта Range действительно нет члена VerticalAlignment, но есть Cells.VerticalAlignment.

Макрос

Sub FTables()

‘ FTable Макрос


    Dim myTable As Word.Table
    For Each myTable In ActiveDocument.Tables
        myTable.PreferredWidthType = wdPreferredWidthPercent   ‘Выравнивание по ширине
        myTable.PreferredWidth = 100                           ‘Размер таблицы в процентах
        myTable.TopPadding = CentimetersToPoints(0.1)          ‘Отступ в ячейке сверху
        myTable.BottomPadding = CentimetersToPoints(0.1)       ‘Отступ в ячейке снизу
        myTable.LeftPadding = CentimetersToPoints(0.1)         ‘Отступ в ячейке слева
        myTable.RightPadding = CentimetersToPoints(0.1)        ‘Отступ в ячейке справа
        myTable.Spacing = 0                                    ‘Расстояние между ячейками
        myTable.AllowPageBreaks = True                         ‘Разрешить перенос на сдедующую страницу
        myTable.AllowAutoFit = False                           ‘Разрешить автоподбор по содержимому
        myTable.Rows.HeightRule = wdRowHeightAtLeast           ‘Установить правило высоты строки
        myTable.Rows.Height = CentimetersToPoints(0.04)        ‘Установить высоту строки

                FTable myTable.Range
        Next myTable
End Sub

    Sub FTable(myRange As Range)
    With myRange
        .Cells.VerticalAlignment = wdCellAlignVerticalTop               ‘Выравнивание текста по вертикали вверх
        .Font.Size = 11                                                 ‘Размер шрифта в пт
        .Font.Name = «Arial»                                            ‘Гарнитура шрифта
    End With

        With myRange.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)            ‘Отступ слева
        .RightIndent = CentimetersToPoints(0)           ‘Отступ справа
        .SpaceBefore = 0                                ‘Интервал до
        .SpaceBeforeAuto = False                        ‘Интервал до автоматически
        .SpaceAfter = 0                                 ‘Интервал после
        .SpaceAfterAuto = False                         ‘Интервал после автоматически
        .LineSpacingRule = wdLineSpaceSingle            ‘Межстрочный интервал — одинарный
        .Alignment = wdAlignParagraphCenter             ‘Выравнивание текста — по центру
        .WidowControl = True                            ‘Запрет висячих строк
        .KeepWithNext = False                           ‘Не отрывать от следующего
        .KeepTogether = False                           ‘Не разрывать абзац
        .PageBreakBefore = False                        ‘С новой страницы
        .NoLineNumber = False                           ‘Запретить нумерацию строк
        .Hyphenation = True                             ‘Запретить автоматичесткий перенос слов
        .FirstLineIndent = CentimetersToPoints(0)       ‘Отступ первой строки
        .OutlineLevel = wdOutlineLevelBodyText          ‘Уровень — основной текст
        .CharacterUnitLeftIndent = 0                    ‘Отступ слева
        .CharacterUnitRightIndent = 0                   ‘Отступ справа
        .CharacterUnitFirstLineIndent = 0               ‘Первая строка
        .LineUnitBefore = 0                             ‘Интервал перед
        .LineUnitAfter = 0                              ‘Интервал после
        .MirrorIndents = False                          ‘Зеркальные отступы
        .TextboxTightWrap = wdTightNone                 ‘Обтекание по контуру
        .CollapsedByDefault = False                     ‘Свернуты по умолчанию
    End With
End Sub

[свернуть]


  • Форум по VBA, Excel и Word

  • Word

  • Макросы в Word

  • Word VBA Макросы: Форматирование текста во всех таблицах документа.

Проблема в получении точного значения междустрочного интервала (хотя бы в points) .

Знаю что в worde есть такое замечательное свойство: .LineSpacing, но хранит оно 12 для 1 интерв.; 18 для 1,5 интерв.; 24 для 2 интерв. То что гласит справка — о +6 points на размер самой большой буквы в строке — тоже не применимо.

Оговорюсь сразу, возможно то что мне нужно и не называется междустрочным интервалом в понимании программистов microsoft, допустим это, хорошо, тогда мне нужен РЕАЛЬНЫЙ междустрочный интервал — МНЕ НУЖНО ЗНАТЬ СКОЛЬКО НЕОБХОДИМО ПРИБАВИТЬ points к размеру шрифта строки, чтобы получить положение верхнего края следующей строки.

Чтобы сразу было понятно о чем говорю:

Посмотреть на эти значения можно очень просто запустив этот макрос:

Код: Выделить всё
Sub Macros1()
Dim i As Long, k As Long
Dim raz As Single
Dim rTemp As Range

ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
        1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
ActiveDocument.Tables(1).Cell(1, 1).Range.Text = "df" & vbCrLf & "df"

For k = 1 To 12
  For i = 8 To 22

    ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).Font.Size = i
    ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).ParagraphFormat.LineSpacing = 6 + 6 * k

             Set rTemp = ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(2)
    Set rTemp = ActiveDocument.Range(Start:=rTemp.Start, End:=rTemp.Start + 3)

             raz = rTemp.Information(wdVerticalPositionRelativeToPage) _
        - ActiveDocument.Tables(1).Cell(1, 1).Range.Sentences(1).Information(wdVerticalPositionRelativeToPage)
    raz = raz - i

        Debug.Print "Коэф. междустр интерв-" & (k - 1) / 2 + 1 & " Размер шрифта-" & i & " Реальн междустр интервал-" & raz
  Next i
Next k
End Sub

Пытался я вникнуть в тайный смысл этих значений, каким же образом word их вычисляет???

Так я провел измерения и составил следующие уравнения зависимости для каждого из множителя межстр. интервала Nx (зависимость реального межстр. интервала от размера шрифта):

для 1x — y=0,2354*SizeFont-1,1776

для 1,5x — y=0,8546*SizeFont-1,8663

для 2x — y=1,4729*SizeFont-2,4965

для 2,5x — y=2,0819*SizeFont-2,7935

для 4x — y=3,9928*SizeFont-7,1573

для 6x — y=0,1551*SizeFont-1,2053

…. в начале вроде намечается тенденция, однако после 4x, она вся сходит на нет…

Вообщем я уже голову сломал пытаясь вычислить реальный межстрочный интервал в points’ах. Можно конечно же брать каждый раз реальные строки и сравнивать их положение, но сами понимаете, что это не очень удобно, особенного для фоного измерения…. Может кто-нибудь смог разобраться с этими междустрочными интервалами???

  1. Коллекция
    Paragrahs.
  2. Интервалы.
  3. Отступы
    и выступы.
  4. Создание
    структуры документа.
  5. Горизонтальное
    выравнивание.
  6. Буквица.
  7. Формат
    абзацев.
  8. Границы.

1.Коллекция Paragraphs.

Любой документ Word состоит из
набора абзацев, которые образуют структуру документа. Признаком конца абзаца
является непечатаемый символ абзаца, который по умолчанию невидим.

Для его отображения в окне диалога Параметры, которое
отображается выбором команды Сервис необходимо установить флажок Знаки
абзацев
. Это также можно выполнить, используя следующий код:

ActiveWindow.View.ShowParagraphs
= True

ActiveWindow – это объект типа Window, связанный с текущим активным окном редактирования Word. Чтобы скрыть знаки абзацев, свойству ShowParagraphs необходимо присвоить значение False.

Для автоматизации работы с абзацами следует использовать
коллекцию Paragraphs, которая содержит все абзацы
конкретного документа. Доступ к нужному абзацу осуществляется с помощью объекта
Paragraph, являющегося конкретным абзацем документа.

Для получения ссылки на коллекцию можно использовать
следующий синтаксис.

Dim objParagraphs as Paragraphs

Set objParagraphs = Documents(Item).Paragraphs

Здесь Item – индекс, указывающий
на определенный документ из семейства открытых документов Documents.

Для перебора всех абзацев документа можно использовать цикл For EachNext

В примере показан код, позволяющий выровнять все
абзацы по центру.

Dim b As Paragraph

For Each b In ActiveDocument.Paragraphs

b.Alignment = wdAlignParagraphJustify

Next

Для получения ссылки к отдельному абзацу можно получить с
помощью метода Item, являющегося
методом по умолчанию.

Синтаксис:

Dim objParagraph as Paragraph

Set objParagraph = Doocuments
(Item).Paragraphs.[Item](Index)

Itemиндекс
указывающий на определенный документ из семейства открытых документов Documents.

Index – указывает на порядковый
номер абзаца в семействе Paragraphs. Первый абзац
документа имеет индекс 1, а индекс последнего можно узнать с помощью свойства Count объекта Paragraphs.

В примере показан код, позволяющий отобразить
информационное окно, в котором будет показан индекс последнего абзаца активного
документа:

MsgBox
«индекс последнего абзаца:» & ActiveDocument.Paragraphs.Count

Для перемещения по абзацам документа можно использовать методы
Next и Previews.

Первый метод позволяет получить ссылку на следующий абзац, а
второй на предыдущий абзац.

Синтаксис:

objParagraph.Next

или

objParagraph.Preview

Для форматирования абзацев также можно использовать объект ParagraphFormat. Этот объект обладает такими же свойствами
и методами, связанными с форматированием отдельного абзаца, как и объект Paragraph. Для объявления объекта типа ParagraphFormat
можно использовать следующий синтаксис:

Dim objParformat
as ParagraphFormat

Set objParFormat = Document(Item).Paragraph(Index).Format

Для создания нового абзаца используется метод Add объекта Paragraphs.

Синтаксис:

ObjParagraph.Add[(range)]

Параметр Range позволяет указать
область, перед которой будет добавлен новый абзац. Если параметр опущен, то
абзац добавляется в конец документа.

В примере показан код позволяющий присвоить
переменной objParagraph ссылку на новый абзац,
добавленный перед выделенным фрагментом или в месте, на которое указывал
курсор.

Dim g As Paragraph

Set g = ActiveDocument.Paragraphs.Add(Selection.Range)

2.Интервалы.

Абзацные.

Интервалы между абзацами позволяют создавать визуальное
разделение между значимыми абзацами, например между заголовками и основным
текстом.

Для задания интервалов между абзацами можно использовать три
метода и два свойства.

Метод OpenUp позволяет
вставить перед данным параграфом интервал, равный 12 пунктам. Использование
этого метода эквивалентно присвоению соответствующего значения свойству SpaceBefore.

ObjParagraph.SpaceBefore[=space]

Параметр Space (тип Long) содержит целое неотрицательное число, указывающее на
величину интервала перед данным абзацем.

Свойство SpaceAfterсодержит
целое неотрицательное число, указывающее на величину интервала после данного
абзаца.

Метод CloseUpпозволяет
удалить интервалы перед данным абзацем. Использование этого метода эквивалентно
присвоению свойству SpaceBefore значение 0.

Метод OpenOrCloseUp позволяет
управлять установлением и удалением абзацных интервалов. Если абзац не имеет
интервала (свойство SpaceBefore имеет значение 0), то
этот метод позволяет установить его подобно методу OpenUp.
Если интервал уже существует, то метод удаляет его подобно методу CloseUp.

Методы DecreaseSpacing  и  IncreaseSpacing позволяют соответственно уменьшить или
увеличить величину абзацного интервала на 6 пунктов одновременно перед абзацем
и после него.

Межстрочные.

Межстрочные интервалы позволяют задать величину расстояния
между строк в пунктах. По умолчанию для текста, отформатированного стилем Обычный, величина межстрочного интервала равна 12 пунктам.

Межстрочные интервалы изменяются с помощью методов
Space1, Space15 и
Space2. Применение этих методов позволяет увеличить
стандартный межстрочный размер в один, полтора и два раза соответственно.

Свойство LineSpacingсодержит
текущую величину межстрочного значения.

ObjParagraph.LineSpacing[=Space]

Параметр Space позволяет
указать необходимую величину межстрокового интервала.

Пример: показан код, позволяющий проверить величину межстрокового интервала у всех в документе и, если такие имеются, присвоить им значение по умолчанию (12 пунктов)

Dim G As Paragraph

For Each G In ActiveDocument.Paragraphs

With G

If .LineSpacing > Application.LinesToPoints(1) Then

.Space1

End If

End With

Next

Метод LinesToPoints объекта
Application позволяет преобразовать линии в пункты.

Application.LinesToPoints(Lines)

Параметр Lines позволяет
задать число линий, значение которых нужно преобразовать в пункты. Например,
если параметр Lines имеет значение 2, то метод
возвращает число 24.

Свойство LineSpacingRule  позволяет установить значение межстрокового интервала в абзаце.

wdLineSpaceAtLeast – минимальный
размер

wWdLineSpaceExactly – точный
размер

 wdLineSpaceMultiple
— множитель

3.Отступы и выступы.

Отступы и выступы позволяют выполнить в документе выделения
определенных абзацев текста. Они создаются с помощью дополнительных полей
страницы.

Метод Indent – позволяет
сместить все строки абзаца вправо на величину равную одной табуляции.
Использование этого метода аналогично смещению вправо указателя отступа,
находящегося на верхней линейке в окне редактирования.

Метод IndentCharWidth позволяет
сместить все строки абзаца вправо на указанное число символов.

ObjParagraph.IndentCharWidth (Count)

Метод IndentFirstLineCharWidth позволяет
сместить вправо только первую строку абзаца, т.е. создать «красную строку».

Свойство FirstLineIndent содержит
число пунктов, на которые первая строка абзаца смещена вправо или влево. Если
«красной строки» нет, то свойство возвращает нуль. Если строка имеет отступ, то
возвращается значение большее нуля, если выступ – меньше нуля.

objParagraph.FirstLineIndent[=count]

При присвоении свойству некоторой величины в пунктах можно
использовать метод LinesToPoints объекта Application, который позволяет преобразовать размер
стандартной ширины линии в пункты: одна линия = 12 пунктам.

Пример: показан код, позволяющий выполнить отступ первого
абзаца и отступ его первой строки на 12 пунктов.

With ActiveDocument.Paragraphs(1)

.Indent

.FirstLineIndent = LinesToPoints(1)

End With

Метод TabHangingIndent позволяет
выполнить отступ и выступ первой строки абзаца на значение, кратное величине
табуляции.

ObjParagraph.TabHangingIndent(count)

Параметр Count (тип Integer) содержит число, характеризующее количество
символов табуляции, на которое должна быть смещена первая строка абзаца -–при смещении вправо значение должно быть положительным, а
влево – отрицательно.

Метод Outdent позволяет
сместить все строки абзаца влево на величину, равную одной табуляции.

Свойство LeftIndent содержит
значение в пунктах, на которые смещен абзац слева.

Свойство RightIndent содержит
значение в пунктах, на которые смещен абзац справа.

Метод TabIndent позволяет
выполнить отступ или выступ левой границы абзаца на значение, кратное величине
табуляции.

4.Создание структуры документа.

Режим структуры документа – это особый режим, в котором
документ может быть представлен на необходимом уровне детализации: от
заголовков первого уровня до абзацев. Режим структуры предназначен для работы с
большими документами, имеющими множество заголовков разных уровней.

В режиме структуры базовым элементом для работы является
абзац. Это не исключает возможность редактирования текста, однако, все
инструменты, определенные для этого режима, действуют только на абзацы или
структуры образованные абзацами.

Как правило, при работе с текстом документа управляющие его
структурой, применяются ко всем абзацам, а свойства – к конкретным абзацам.

Метод OutLinePromote позволяет
повысить уровень текущего абзаца.(если абзац
отформатирован стилем Заголовок2, то применение этого метода автоматически
назначит ему стиль Заголовок1.)максимальный уровень – первый.

Метод OutLineDemote позволяет
понизить уровень текущего абзаца. Минимальный уровень – девятый.

Метод OutLineDemoteToBody позволяет
понизить абзац, являющийся заголовком любого уровня, до обычного текста.

Пример: показан код позволяющий преобразовать все абзацы,
отформатированные стилем заголовок9 в обычный текст

Dim t As Paragraph

For Each t In ActiveDocument.Paragraphs

If t.OutlineLevel = wdOutlineLevel9 Then

t.OutlineDemoteToBody

End If

Next

Свойство OutLineLevel содержит
значение, указывающее на текущий уровень абзаца.

5.Горизонтальное выравнивание.

Для горизонтального выравнивания текста в документе можно
использовать выравнивание строк абзаца по левому или правому краю, по ширине или
по центру. По умолчанию Word выравнивает весь текст
по левому полю документа.

Свойство Aligment позволяет
выполнить горизонтальное выравнивание.

ObjParagraph.Aligment [=Aligment]

Параметр Aligment позволяет
установить порядок выравнивания:

wdAlignParagraphLeft – по левому
краю

 wdAlignParagraphCenter
– по центру

 wdAlignParagraphRight
– по правому краю

 wdAlignParagraphJustify
– по ширине

6.Буквица.

Буквица – это большая заглавная буква первого слова в
абзаце.

В VBA создание буквиц в документе реализуется с помощью свойства
DropCap
объекта Paragraph.

Пример: создать буквицу для первого абзаца активного
документа.

With ActiveDocument.Paragraphs(1).DropCap

.Position =
wdDropNormal

.LinesToDrop = 3

End
With

7.Формат абзацев.

Форматирование абзаца документа выполняется с помощью
объекта ParagraphFormat, ссылку на который можно
получить с помощью свойства Format объекта Paragarph. (смотрите выше)

Ссылку на объект типа ParagraphFormat
можно сделать также с помощью свойства Paragraphformat
объекта Selection.

Selection.ParagraphFormat

Этот способ более предпочтителен, так в этом случае ссылка
не будет привязана к конкретному абзацу. Объект ParagarphFormat
будет связан с абзацем, выделенным в текущий момент, или с тем, в котором
находится курсор.

Объявлять переменную и типа ParagarphFormat
имеет смысл только при использовании сложного форматирования. Для внесения
небольших изменений  удобнее использовать
свойство Format.

Пример: горизонтальное выравнивание всех абзацев документа
по центру.

ActiveDocument.Paragraphs.Format.Alignment = wdAlignParagraphCenter

8.Границы.

В VBA для доступа к любым границам используется объект Borders, являющийся семейством объектов Border,
каждый из которых связан с границей.

Для получения ссылки на семейство Borders
можно использовать свойство Borders.

ObjParagraph.Borders[(Border)]

Параметр Boredr позволяет
указать на конкретную границу.

Пример: назначаем нижней границе первого абзаца стиль
двойной линии.

 ActiveDocument.Paragraphs(1).Borders(wdBorderBottom).LineStyle = wdLineStyleDouble

Формат границы устанавливается с помощью свойств linestyle и LineWidth. Свойство lifestyle – позволяет установить стиль линии границы, а
свойство LineWidth ее ширину.

objBorder.LineStyle[=LineStyle]

objBorder.LineWidth[=LineWidth]

Цвет линии определяется с помощью свойства Color.

objBorder.ColorIndex [=Color]

Dim s As Border

Set s = ActiveDocument.Paragraphs(1).Borders(wdBorderLeft)

With s

 . LineStyle = wdLineStyleDot

. ColorIndex = wdBlue

. LineWidth = wdLineWidth025pt

End With

9.Объект
Document.

Объект Document представляет собой
конкретный документ, открытый в MS Word. Доступ к
нему можно получить с помощью коллекции Documents.

По умолчанию любой только что открытый документ является
активным. Однако при работе с несколько открытыми документами требуется механизм активизации нужного документа для этого
используется
метод Activate.

Синтаксис:

ObjDocument.Activate

Метод возвращает ссылку на объект типа Document.

Пример:

Set objDocument1=Documents.Add
‘создание и активизация документа Doc1

Set objDocument2=Documents.Add
‘создание и активизация документа Doc2

objDocument1.Activate ‘активизация документа Doc1

Для обращения к активному документу можно использовать
глобальное свойство ActiveDocument, которое
возвращает ссылку на объект типа Document. При таком
обращении можно избежать идентификации конкретного документа, обращаясь к
активному в данный момент времени документу напрямую.

 Кроме объекта
связанного с активным документом, в VBA имеется объект, связанный с текущим
документом. Объект ThisDocumentсе всегда указывает на
тот документ , в проектк
которого он объявлен. Свойства и методы объекта ThisDocument
соответствуют свойствам и событиям объекта Document

Этот объект является глобальным и его дополнительное
объявление не требуется. Свойства.

GrammarCheckedопределяет была ли запущена проверку грамматики для
заданного документа(true) или нет (false). В случае необходимости повторного запуска
грамматики этому свойству следует задать значение false.

GrammaticalErrors – возвращает
коллекцию ProfreadingErrors, которая включает
предложения, содержащие грамматические ошибки диапазона или всего документа. В
том случае, если грамматические ошибки отсутствуют, свойство GrammaticalErrors возвращает значение 0.

Name – определяет имя файла на
диске, в котором хранится документ. С помощью этого свойства можно получить имя
файла, но нельзя изменить его.

Paragraphs – возвращает коллекцию Paragraphs, которая содержит все абзацы в заданном
документе, диапазоне или выделении.

ReadOnly – это свойство имеет
значение true, если внесенные в документ изменения не
могут быть сохранены в нем.

Saved – если файл не сохранен, то
данное свойство имеет значение true; еслм нет – False.

ShowSpellingErrorstrue _позволяет установить режим
подчеркивания слов, содержащих орфографические ошибки.

ShowGrammaticalErrors – позволяет
задать режим подчеркивания грамматических ошибок во время ввода текста в
документ(true).

Styles – возвращает коллекцию Styles, которая содержит все стили данного документа. Tables
возвращает коллекцию Tables, которая содержит все
таблицы данного документа, диапазона или выделения.

TablesOfContents — возвращает
коллекцию TablesOfContents, которая содержит все
оглавления данного документа.

Type – возвращает тип документа:

wdTypeDocument – обычный документ,

wdTypeTemplate – шаблон.

Windows — возвращает коллекцию Windows, которая содержит все окна данного документа.

Tables — возвращает коллекцию Tables, которая содержит все таблицы данного документа,
диапазона или выделения.

TablesOfContents — возвращает
коллекцию TablesOfContents, которая содержит все
оглавления данного документа.

Type – возвращает тип документа:

wdTypeDocument – обычный документ,

wdTypeTemplate – шаблон.

Windows — возвращает коллекцию Windows, которая содержит все окна данного документа.

Методы.

CheckGrammarпредназначен для проверки орфографии и грамматики в заданном
документе или диапазоне. Если в результате проверки были найдены ошибки, то
будет автоматически загружено окно диалога Правописание. Заметим, что проверка
правописания может выполнятся для выделенного
текстового фрагмента или отдельного строкового выражения. В первом случае в
качестве родительского объекта используется объект Selection.

Selection.CheckGrammar

Чтобы проверить правописание в стоковом выражении,
необходимо использовать метод CheckGrammar объекта Application. Проверяемое выражение передается в метод с
помощью параметра String

Синтаксис: Application.CheckGrammar(String)

Признак выполнения проверки содержится в свойстве GrammarChecked.

В приведенном примере показан код, позволяющий создать
информационное окно, в котором содержатся все найденные в документе ошибки.

Sub ошибки()

With ActiveDocument.GrammaticalErrors

For i = 1 To .Count

s = s
& .Item(i) & vbCrLf(Комбинация символов возврата каретки и перевода
строки)

Next

End With

MsgBox s

End Sub

CheckSpelling
начинает проверку орфографии для заданного документа или диапазона.

PrintPreview – переключает
MS Word в режим предварительного просмотра документа.

Range – возвращает объект Range, задаваемый начальной и конечной позициями символов
фрагмента текста.

Синтаксис:

ObjDocument.Range(Start, End)

Start – определяет
позицию первого символа диапазона. Нулевое значение данного свойства
соответствует началу документа.

End – определяет  позицию последнего символа диапазона.

Redo – повторяет последнее
из отмененных до этого действий или целую последовательность отмененных
действий. Данный метод возвращает значение true, если
действие было повторено.

Синтаксис:

ObjDocument.Redo(Times)

Times – определяет количество
повторяемых действий.

Пример: ActiveDocument.Redo 2

Save – в отличии от одноименного метода коллекции Documents,
не имеет параметров. Данный метод аналогичен выполнению команды Файл®Сохранить.

SaveAs – позволяет
выполнить действия, аналогичные действиям, выполняемым командой Файл®Сохранить
Как. Параметры этого метода совпадают с параметрами, установленными в окне
диалога Сохранение документа.

objDocument.SaveAs(FileName, FileFormat,
LockComments, Password, AddToRecentFiles,
WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat,
SaveFormsData, SaveAsAOCELetter)

Параметр FileName
содержит имя сохраняемого файла.

FileFormat – содержит формат в котором будет выполнено сохранение.

LockComments – содержит
указание на возможность добавления коментариев.

Password – пароль на открытие документа.

AddToRecentFiles – указывает на возможность добавления сохраняемого файла в список
недавно открытых в меню Файл.

WritePassword – пароль на
запись в документе.

ReadOnlyRecommended
указывает на создание обязательного предупреждения об открытии только для
чтения.

EmbedTrueTypeFonts
указывает на сохранение шрифтов вместе с документом.

SaveNativePictureFormat
указывает на сохранение внедренной графики в формате
Windows.

SaveFormsData – указывает
на сохранение данных, внесенных пользователем в форму.

SaveAsAOCELetter – если
сохраненный документ имеет присоединенную почтовую программу, то при задании
этому параметру значения true
документ будет сохранен как письмо.

 Undo – отменяет последнее
выполненное действие или последовательность действий.

Синтаксис: objDocument.Undo(times).

UpdateStyle – копирует все стили из
присоединенного шаблона в документ.
При этом выполняется автоматическая
замена всех уже имеющихся стилей с именами, совпадающими с именами стилей из шаблона.

Режим отображения документа. 

Для управлениями
отображения документа используется объект View, являющийся объектом-свойством объекта Window.

Синтаксис:

ObjWindow.View.Type[ = ViewType]

wdOutlineView – режим
структуры.

wdPrintView – режим
разметки.

wdNormalView – обычный
режим.

wdPruntPreview – режим
предварительного просмотра.

wdWebView – режим Web – документа.

Пример: показан код позволяющий перевести
документ из режима предварительного просмотра документа в обычный режим
просмотра

With ActiveWindow.View

If .Type = wdPrintPreview Then

.Type = wdNormalView

Else

MsgBox
«
режим отображения:» & .Type

End If

End WithРежим
отображения документа. 

Для управлениями
отображения документа используется объект View, являющийся объектом-свойством объекта Window.

Синтаксис:

ObjWindow.View.Type[ = ViewType]

wdOutlineView – режим
структуры.

wdPrintView – режим
разметки.

wdNormalView – обычный
режим.

wdPruntPreview – режим
предварительного просмотра.

wdWebView – режим Web – документа.

Пример: показан код позволяющий перевести
документ из режима предварительного просмотра документа в обычный режим
просмотра

With ActiveWindow.View

If .Type = wdPrintPreview Then

.Type = wdNormalView

Else

MsgBox
«
режим отображения:» & .Type

End If

End With

  1. Коллекция
    Paragrahs.
  2. Интервалы.
  3. Отступы
    и выступы.
  4. Создание
    структуры документа.
  5. Горизонтальное
    выравнивание.
  6. Буквица.
  7. Формат
    абзацев.
  8. Границы.

1.Коллекция Paragraphs.

Любой документ Word состоит из
набора абзацев, которые образуют структуру документа. Признаком конца абзаца
является непечатаемый символ абзаца, который по умолчанию невидим.

Для его отображения в окне диалога Параметры, которое
отображается выбором команды Сервис необходимо установить флажок Знаки
абзацев
. Это также можно выполнить, используя следующий код:

ActiveWindow.View.ShowParagraphs
= True

ActiveWindow – это объект типа Window, связанный с текущим активным окном редактирования Word. Чтобы скрыть знаки абзацев, свойству ShowParagraphs необходимо присвоить значение False.

Для автоматизации работы с абзацами следует использовать
коллекцию Paragraphs, которая содержит все абзацы
конкретного документа. Доступ к нужному абзацу осуществляется с помощью объекта
Paragraph, являющегося конкретным абзацем документа.

Для получения ссылки на коллекцию можно использовать
следующий синтаксис.

Dim objParagraphs as Paragraphs

Set objParagraphs = Documents(Item).Paragraphs

Здесь Item – индекс, указывающий
на определенный документ из семейства открытых документов Documents.

Для перебора всех абзацев документа можно использовать цикл For EachNext

В примере показан код, позволяющий выровнять все
абзацы по центру.

Dim b As Paragraph

For Each b In ActiveDocument.Paragraphs

b.Alignment = wdAlignParagraphJustify

Next

Для получения ссылки к отдельному абзацу можно получить с
помощью метода Item, являющегося
методом по умолчанию.

Синтаксис:

Dim objParagraph as Paragraph

Set objParagraph = Doocuments
(Item).Paragraphs.[Item](Index)

Itemиндекс
указывающий на определенный документ из семейства открытых документов Documents.

Index – указывает на порядковый
номер абзаца в семействе Paragraphs. Первый абзац
документа имеет индекс 1, а индекс последнего можно узнать с помощью свойства Count объекта Paragraphs.

В примере показан код, позволяющий отобразить
информационное окно, в котором будет показан индекс последнего абзаца активного
документа:

MsgBox
«индекс последнего абзаца:» & ActiveDocument.Paragraphs.Count

Для перемещения по абзацам документа можно использовать методы
Next и Previews.

Первый метод позволяет получить ссылку на следующий абзац, а
второй на предыдущий абзац.

Синтаксис:

objParagraph.Next

или

objParagraph.Preview

Для форматирования абзацев также можно использовать объект ParagraphFormat. Этот объект обладает такими же свойствами
и методами, связанными с форматированием отдельного абзаца, как и объект Paragraph. Для объявления объекта типа ParagraphFormat
можно использовать следующий синтаксис:

Dim objParformat
as ParagraphFormat

Set objParFormat = Document(Item).Paragraph(Index).Format

Для создания нового абзаца используется метод Add объекта Paragraphs.

Синтаксис:

ObjParagraph.Add[(range)]

Параметр Range позволяет указать
область, перед которой будет добавлен новый абзац. Если параметр опущен, то
абзац добавляется в конец документа.

В примере показан код позволяющий присвоить
переменной objParagraph ссылку на новый абзац,
добавленный перед выделенным фрагментом или в месте, на которое указывал
курсор.

Dim g As Paragraph

Set g = ActiveDocument.Paragraphs.Add(Selection.Range)

2.Интервалы.

Абзацные.

Интервалы между абзацами позволяют создавать визуальное
разделение между значимыми абзацами, например между заголовками и основным
текстом.

Для задания интервалов между абзацами можно использовать три
метода и два свойства.

Метод OpenUp позволяет
вставить перед данным параграфом интервал, равный 12 пунктам. Использование
этого метода эквивалентно присвоению соответствующего значения свойству SpaceBefore.

Формулировка задачи:

.ParagraphFormat.Space15()
устанавливается полуторный интервал текста в word
в 2010 ворде есть интервал 1,15
как его установить
.ParagraphFormat.Space115()
не реботает.

Код к задаче: «ParagraphFormat — установка междустрочного интервала в Word»

textual

ParagraphFormat.LineSpacingRule = wdLineSpaceExactly 
ParagraphFormat.LineSpacing = LinesToPoint(1,15)

Полезно ли:

15   голосов , оценка 4.133 из 5

Как проверить межстрочный интервал между абзацами MS Word, используя скрипт vba. Вот код, в котором межстрочный интервал изменяется в пункте (1). мы добавляем абзац (1) в строку 2. Теперь, как мы можем получить его, если мы дадим тот же абзац (1), а он даст нам 2.

2018-09-11 12:16

2

ответа

Чтобы проверить межстрочный интервал: Selection.ParagraphFormat.LineSpacing

Te увеличить межстрочный интервал Selection.ParagraphFormat.LineSpacing = .LineSpacing + 1

Te уменьшить межстрочный интервал Selection.ParagraphFormat.LineSpacing = .LineSpacing - 1

Благодарю.

2018-09-17 15:23

Запишите макрос, в котором вы измените настройку линии, а затем посмотрите на полученный результат.

Если есть какое-то ключевое слово, которое вы не понимаете, наведите на него курсор и нажмите F1, чтобы открыть страницу справки MS для этого ключевого слова.

Для записи макроса необходимо включить вкладку «Разработчик».

2018-09-11 14:03

Понравилась статья? Поделить с друзьями:
  • Word vba add row and table
  • Word vba activedocument saved
  • Word vba activedocument save
  • Word vba activedocument range
  • Word vast in a sentence