2

Делая следующее:

  • щелкнув правой кнопкой мыши стиль нормального абзаца,
  • Изменить ...
  • [Формат], Нумерация ...
  • [Определить новый формат чисел ...]
  • Числовой стиль: 1,2,3 ...; Числовой формат: 1; Выравнивание: право

а также

  • щелкнув правой кнопкой мыши стиль нормального абзаца,
  • Изменить ...
  • [Формат], абзац ...
  • Отступ слева: -0,25 "; Специальный: подвесной; по: 0,25"

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

Однако я хочу, чтобы номера абзацев всегда появлялись на внешнем крае, т. Е. Числа от 12 до 14 должны появляться на правом краю, а не на левом краю, как на предыдущей странице.

Как и изображения, таблицы и т.д., Я должен иметь возможность ссылаться на любой номер абзаца («согласно абзацам 117 и далее»), что возможно при вышеуказанном подходе.

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

Возможен ли такой стиль нумерации?

(Использование MS Word 2019 Professional: возможно, нам стоит добавить тег для него?)

1 ответ1

0

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

Это можно сделать, хотя и не полностью автоматически, вручную и / или с помощью VBA.

  1. Выберите любой (пустой) абзац и примените к нему Frame . Команду « Insert Frame можно найти на вкладке « Developer » на ленте, в группе «Элементы управления», в старых элементах управления. Это четвертый элемент управления слева

  1. Размер рамки, примените размер шрифта, который вы хотите для чисел и т.д.
  2. Щелкните правой кнопкой мыши рамку, чтобы перейти в диалоговое окно "Формат рамки". Для горизонтального положения выберите Outside относительно страницы и при необходимости отрегулируйте расстояние от текста. Вертикальное положение должно быть 0 относительно абзаца. Убедитесь, что "Переместить с текстом" и "Блокировка привязки" активированы. Когда диалоговое окно подтверждено, рамочный абзац должен переместиться к внешнему полю непосредственно следующего абзаца.
  3. Создайте новый стиль из этого абзаца - он будет включать определение фрейма.
  4. Проверьте стиль, введя или выбрав другой пустой абзац и применив к нему стиль.

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

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

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

В этом коде стиль для фреймов называется NrPara ; если вы используете другое имя, вам нужно изменить это.

Sub NumberParas()
    Dim doc as Word.Document
    Dim Para As Word.Paragraph
    Dim rngPara As Word.Range, rngParas() As Word.Range
    Dim numParas As Long, counterPara As Long
    Dim numParaStyle As Word.style
    Dim rngNumPara As Word.Range
    Dim sSEQ As String

    sSEQ = "SEQ ParaNum"
    Set doc = ActiveDocument
    numParas = doc.Paragraphs.Count
    ReDim rngParas(numParas - 1)

    'Get an array of the paragraph ranges
    For counterPara = numParas To 1 Step -1
        Set Para = doc.Paragraphs(counterPara)
        Set rngPara = Para.Range
        Set rngParas(counterPara - 1) = rngPara
    Next

    'Insert a paragraph above each existing one, format and insert SEQ field
    For counterPara = LBound(rngParas) To UBound(rngParas)
        Set rngPara = rngParas(counterPara)
        With rngPara
            .InsertBefore vbCr
            .Collapse wdCollapseStart
            .Fields.Add rngPara, wdFieldEmpty, sSEQ, False
            rngPara.style = "NrPara"
        End With
    Next
    doc.Fields.Update
End Sub

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