1

Тема: Преобразовать списки в HTML

Доброго времени суток. Задача заключается в следующем: средствами VBA необходимо преобразовать маркированные, нумерованные и многоуровневые списки в формат HTML (ol, ul…) при этом необходимо сохранить хотя бы основное форматирование: параметры шрифта, отступы. Как я понимаю, специальной функции для такого нет, поэтому делаю вручную.

Столкнулся с кучей проблем и вопросов:

1. Не уверен, что понимаю, как получать доступ к элементам списка.
Lists(i).Range.Text выдает вообще весь текст в списке, с переходами на новую строку, без маркеров.
Lists(i).ListParagraphs.Item(j).Range.Text возвращает отдельные элементы, но только те, которые промаркированы/пронумерованы. То есть, когда при наборе списка мы нажимаем Enter, мы получаем новый маркированный параграф, если 1 раз нажать Backspace, мы останемся в списке, но маркер пропадёт. Можно ли получить доступ к таким параграфам через объект списка?

2. Как узнать стиль списка и получить доступ к отдельным полям (имя шрифта, размер… отступ строки от левого края…)? Видимо в стиле также можно узнать тип нумерации/маркера?

P.S. Буду рад как ответам на мои конкретные вопросы, так и общим предложениям по решению поставленной задачи.

2

Re: Преобразовать списки в HTML

Возможно будет проще xml перегнать в html? Ведь внутренний формат docx это xml. Я тут не помощник, это как идея, если вы работали с xml...

А в Word достаточно перебора ListParagraphs документа и свойства ListFormat параграфа:

Dim P As Word.Paragraph

    For Each P In ActiveDocument.ListParagraphs
        MsgBox P.Style ' стиль абзаца
        MsgBox P.Range.ListFormat.ListType ' тип списка
        MsgBox P.Range.ListFormat.ListString  ' текст номера
        ' и т.д.
    Next P
Макросы под заказ и готовый пакет - mtdmacro.ru

3

Re: Преобразовать списки в HTML

Да, про внутреннюю структуру docx я знаю и поэтому почти сразу попробовал работать в этом направлении. То, что можно найти в недрах документа я осмысливаю, хотя и с трудом, что касается списков, то я так и не понял, как они становятся именно списками. При сохранении документя в xml, получаю то же самое, только в одном файле (ещё и переносов строк в моих редакторах не наблюдаю)...

Что касается приведённого кода - спасибо. Хотя я до этого уже успел сам дойти. Зато теперь знаю, что шёл, куда следовало.

P.S. С каждым разом объектная модель Word кажется мне все запутаннее и совершенно не сообразуется с моей собственной логикой...