我有一个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
甚至不为我编译。
我知道将Word中的格式转换为html标记的一种方法是使用Access。如果您创建一个Access表,其中包含具有长文本数据类型和富文本作为文本格式的字段并将Word文本导入其中,当您查询Access以将文本放回Word时,它将显示为带有html标记的文本。
您可以使用以下代码作为起点。但显然,你必须扩展它来处理你所关注的所有标签。
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