[ID CC-CC2022] Копирование нумерованного списка из Word

  • Автор темы Автор темы izrukvruki
  • Дата начала Дата начала

izrukvruki

Топикстартер
15 лет на форуме
Сообщения
1 877
Реакции
307
Можно из ворда как-то скопировать текст с нумерацией, чтоб нумерация стала частью текста, а не способом форматирования?
Читал советы, что нужно текст сначала сохранить как RTF, но оттуда все равно копируется не как текст...

Простую нумерацию 1, 2, 3 - можно и в ручную вернуть, а вот сложную - 1.1,1...9.18.35 - запутаешься вбивать
 
Маменький макрос для Word
Код:
Sub Numerik_to_TXT()
     Dim i As Long
    'Отключаем обновление монитора, чтобы быстрее работало.
    Application.ScreenUpdating = False
        For i = ActiveDocument.ListParagraphs.Count To 1 Step -1
        ActiveDocument.ListParagraphs(i).Range.ListFormat.ConvertNumbersToText
    Next i
     'Включаем обновление монитора.
    Application.ScreenUpdating = True
    'Сообщение, что код завершил работу.
    MsgBox "Код завершил работу!", vbInformation
End Sub
 
  • Спасибо
Реакции: К.Т. и izrukvruki
Не надо копировать, надо помещать ("Place") с включённым показом опций импорта.
Среди них есть галка для перевода нумераций в текст.
 
Последнее редактирование:
Не надо копировать, надо помещать ("Place") с включённым показом опций импорта.
Среди них есть галка как для перевода нумераций в текст.
Поместить можно и doc, или нужен rtf?
Зачастую нужен не весть документ, а какой-то фрагмент (хотя можно в Indesign поудалять лишнее)
 
Можно и doc, и rtf.
Но только файл целиком, да.
 
Не надо копировать, надо помещать ("Place") с включённым показом опций импорта.
Среди них есть галка для перевода нумераций в текст.
Иногда ключит. Поэтому макрос для ворда лучше.

Код:
Sub ConvertListsToText()
ActiveDocument.Range.ListFormat.ConvertNumbersToText
End Sub
 
  • Спасибо
Реакции: arxLoky и Bebs
Иногда ключит. Поэтому макрос для ворда лучше.
А ещё лучше так:
Код:
Sub Numbering_to_text_Current()
   Numbering_to_Text Range_Current
End Sub
'---------------------------------------------------------------------------------------------
Sub Numbering_to_text_Current_Nums_Only()
   Numbering_to_Text Range_Current, False, True
End Sub
'---------------------------------------------------------------------------------------------
Sub Numbering_to_text_Current_Bullets_Only()
   Numbering_to_Text Range_Current, True, False
End Sub
'---------------------------------------------------------------------------------------------

'---------------------------------------------------------------------------------------------
Sub Numbering_to_Text(Rng As Word.Range, Optional bulletsConvert As Boolean = True, Optional numsConvert As Boolean = True)
Dim i As Long
'-
   With Rng.ListParagraphs
      For i = .Count To 1 Step -1
         With .item(i).Range.ListFormat
            If bulletsConvert And .ListType = wdListBullet Then .ConvertNumbersToText
            If numsConvert And (.ListType = wdListSimpleNumbering _
                             Or .ListType = wdListMixedNumbering _
                             Or .ListType = wdListOutlineNumbering) Then .ConvertNumbersToText
         End With
      Next i
   End With
End Sub
'---------------------------------------------------------------------------------------------
Function Range_Current() As Word.Range
   If Selection.Start = Selection.End Then
      Set Range_Current = ActiveDocument.Range
   Else
      Set Range_Current = Selection.Range
   End If
End Function
Скопировал из своих рабочих модулей.
Позволяет, во-первых, переводить нумерацию в текст не во всём файле, а в выделенном диапазоне, если есть выделение;
и во-вторых, делать это отдельно для нумерованных и для маркированных списков (иногда полезно).

Но вообще, на мой взгляд, если глючит размещение файла, то что-то не отлажено в рабочем процессе.
Я уже и не помню, сколько лет назад использовал копипаст для размещения текста из Word в InD (не считая мелких фрагментов, конечно) — проблем нет.
 
  • Спасибо
Реакции: Bebs
...

Но вообще, на мой взгляд, если глючит размещение файла, то что-то не отлажено в рабочем процессе.
Я уже и не помню, сколько лет назад использовал копипаст для размещения текста из Word в InD (не считая мелких фрагментов, конечно) — проблем нет.
Рабочий процесс не может быть отлажен как-то иначе чем позволяет Индизайн. А он позволяет очень мало в отношении авто-списков. Поэтому я убиваю их в ворде, так-же как и вы. Было достаточно одного раза чтобы я восстанавливал списки в документе с фрагментами законов (исходники у меня ВСЕГДА из разных источников, как-то повлиять на авторов нереально).
Ну, на больших файлах копипастить как-то не очень, всегда применяю Place.
Ваш макрос хорош, было бы ещё лучше если бы прикрутили назначение спискам определенного абзацного стиля.
 
А он позволяет очень мало в отношении авто-списков
Не меньше, чем Word, насколько я могу судить.

убиваю их в ворде, так-же как и вы
Я — далеко не всегда.
Сложную нумерацию типа юридических документов, разумеется, лучше сразу в текст перед размещением.
В подобных текстах автонумерация и не нужна по смыслу, поскольку номера и последовательность абзацев точно не будут меняться.
А в каких-то других ситуациях удобнее её сохранять.

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

Назначение абзацных стилей в Word в общем случае лучше делать штатным способом — в панели стилей с отображением всего имеющегося форматирования: для любого формата (в том числе формата списка) команда "выделить все вхождения", и назначить выделенному нужный стиль.
К сожалению это не всегда работает как надо, слишком много разновидностей бывает. Я просто перестал даже делать попытки таким образом назначать спискам стили. Перенёс эту задачу в Индизайн с его ГРЕПом.