Преобразование диапазона слов в строку с тегами HTML в VBA - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть документ Word, и мне нужно скопировать его абзац в строку в VBA.При этом форматирование текста должно быть преобразовано в теги HTML.Например, если мой абзац выглядит так:

Здравствуйте, я Алиса .

Я хочу получить строку, содержащую:

Hello I am <b>Alice</b>

(И было бы здорово, если бы он также работал для маркированного списка и другого вида форматирования).

Я использую Microsoft Visual Basic для приложений 7.0.Я новичок в VBA и много кода, который я нашел в Интернете, не работает для меня, потому что моя версия старая.К сожалению, загрузка более новой версии в моем случае не вариант.

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

Dim pParagraph As Paragraph
'... at some point, pParagraph is set to a paragraph of the document

Dim pRange As Range
Dim pString As String
Set pRange = ActiveDocument.Range(Start:=pParagraph.Range.Start, End:=pParagraph.Range.End - 1)
pString = Trim(pRange.Text)

Я провел небольшое исследование в Интернете и нашел совет скопировать Range в буфер обмена ииспользовать Clipboard.getText.К сожалению Clipboard.getText даже не компилируется для меня.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

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

Sub ApplyHTML()
Application.ScreenUpdating = False
With ActiveDocument.Range
  '.ListFormat.ConvertNumbersToText
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Format = True
    .Forward = True
    .MatchWildcards = True
    .Wrap = wdFindContinue
    .Font.Underline = True
    .Text = ""
    .Replacement.Text = "<u>^&</u>"
    .Execute Replace:=wdReplaceAll
    .ClearFormatting
    .Font.Bold = True
    .Replacement.Text = "<b>^&</b>"
    .Execute Replace:=wdReplaceAll
    .ClearFormatting
    .Font.Italic = True
    .Replacement.Text = "<i>^&</i>"
    .Execute Replace:=wdReplaceAll
    .ClearFormatting
    .Highlight = True
    .Replacement.Text = "<h>^&</h>"
    .Execute Replace:=wdReplaceAll
  End With
End With
Application.ScreenUpdating = True
End Sub
0 голосов
/ 16 января 2019

Я знаю, как преобразовать форматирование в Word в теги html - это использовать Access.Если вы создаете таблицу Access с полем с типом данных Long Text и Rich Text в качестве текстового формата и импортируете в него текст Word, когда вы запрашиваете Access, чтобы вернуть текст обратно в Word, он выглядит как текст с тегом html.

...