4

Я хотел бы оформить документ Word с заголовками, которые имеют границы вокруг них, но не для всей ширины страницы.

Что-то похожее на это:Направление на границе, выровнено по левому краю

Хитрость в том, что на нечетных страницах я бы хотел, чтобы заголовок был выровнен справа, а не слева.

Направление на границе, выравнивание по правому краю

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

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

1 ответ1

1

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

Приведенный ниже код проходит через все параграфы документа и для каждого стиля заголовка (уровень контура установлен больше или равен 1) устанавливает выравнивания и вертикальные границы в соответствии с номером страницы.

Sub alignHeaders()
    Dim i As Integer
    Dim p As Paragraph
    Dim IndentAmount As Single

    IndentAmount = CentimetersToPoints(10) 

    Application.ScreenUpdating = False

    For Each p In ActiveDocument.Paragraphs
        With p
            If .OutlineLevel <> wdOutlineLevelBodyText Then
                If .Range.Information(wdActiveEndAdjustedPageNumber) Mod 2 = 1 Then
                    With .Range.ParagraphFormat
                        .LeftIndent = 0
                        .RightIndent = IndentAmount
                        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
                        .Borders(wdBorderRight).LineStyle = wdLineStyleSingle
                    End With
                Else
                    With .Range.ParagraphFormat
                        .RightIndent = 0
                        .LeftIndent = IndentAmount
                        .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
                        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
                    End With
                End If
            End If
        End With
    Next p

    Application.ScreenUpdating = True
End Sub  

Запуск макроса:

  • Вы можете либо разместить его
    • в твоем нормальном. дотм
    • в документах вы хотите иметь это форматирование
    • Вы можете создать файл шаблона, в котором вы определяете стили заголовка, а также размещаете этот макрос
  • Вы можете назначить горячую клавишу для макроса для запуска, когда вы считаете, что это необходимо
  • Вы также можете настроить автоматический запуск макроса перед печатью / сохранением, здесь есть полезное руководство (предупреждение: если вы установите этот макрос таким образом, и он находится в normal.dotm, он отформатирует все файлы, которые вы сохраните / распечатаете!)

Дополнительное примечание: этот макрос теперь меняет форматирование всех абзацев, где уровень структуры не пуст, в зависимости от ваших целей, вы можете изменить его. Проверка имен стилей вместо уровней контура (например, If Left(.Style,7)="Heading") будет очевидным решением, однако это не сработает в других языках, так как имена стилей зависят от языка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .