【发布时间】:2020-08-18 22:24:47
【问题描述】:
我有一个 Word 文档,我需要将其中的一些段落复制到 VBA 中的字符串中。这样做时,必须将文本格式转换为 HTML 标记。例如,如果我的段落如下所示:
你好,我是 Alice。
我想得到一个字符串,其中包含:
Hello I am <b>Alice</b>
(如果它也适用于项目符号列表和其他类型的格式,那就太好了)。
我正在使用 Microsoft Visual Basic for Applications 7.0。 我是 VBA 新手,我在 Internet 上找到的很多代码对我不起作用,因为我的版本太旧了。不幸的是,就我而言,下载更新的版本不是一种选择。
这是一个代码示例,可以将段落转换为不带格式的字符串:
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)
我在 Internet 上进行了一些研究,发现建议将 Range 复制到剪贴板并使用 Clipboard.getText。不幸的是,Clipboard.getText 甚至没有为我编译。
【问题讨论】:
-
Word 可以将其格式转换为 HTML 标记的唯一方法是使用转换器。一种方法是将文件保存为 HTML,另一种方法是复制到剪贴板。您正在尝试的后者的问题是 VBA 只能从剪贴板获取 text - 它不包含 HTML。 VBA 没有
Clipboard.getText,这就是它无法编译的原因。它确实有属于MSForms库的DataObject。但是,DataObject只能检索文本,并且不会传递 HTML 或 RTF。 -
您发现的可能是不属于 Office 或 VBA 的 .NET 代码 - 无论您的版本是新旧版本。在 Word 中保存为 HTML 可能也不会令人满意,因为它不能保存为“简单”的 HTML。您可能需要使用查找/替换来搜索格式并将所需的标签附加到“找到”文本。