在VBA中将Word范围转换为带有HTML标记的字符串

问题描述 投票:1回答:2

我有一个Word文档,我需要将它的一些段落复制到VBA中的字符串中。执行此操作时,必须将文本格式转换为HTML标记。例如,如果我的段落如下所示:

你好,我是爱丽丝。

我想得到一个包含以下内容的字符串:

Hello I am <b>Alice</b>

(如果它也适用于项目符号列表和其他类型的格式,那将是很棒的)。

我正在使用Microsoft Visual Basic for Applications 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)

我做了一些关于互联网的研究,并建议将范围复制到剪贴板并使用Clipboard.getText。不幸的是Clipboard.getText甚至不为我编译。

vba ms-word word-vba
2个回答
0
投票

我知道将Word中的格式转换为html标记的一种方法是使用Access。如果您创建一个Access表,其中包含具有长文本数据类型和富文本作为文本格式的字段并将Word文本导入其中,当您查询Access以将文本放回Word时,它将显示为带有html标记的文本。


0
投票

您可以使用以下代码作为起点。但显然,你必须扩展它来处理你所关注的所有标签。

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
© www.soinside.com 2019 - 2024. All rights reserved.