似乎当您将某些内容从 Web 浏览器复制到剪贴板时,至少会存储 2 项内容:
- 纯文本
- HTML 源代码
然后由您粘贴到的软件来确定它想要哪个。粘贴到MS Excel 2003时,您有一个粘贴特殊选项来粘贴 HTML,它将粘贴格式化的 HTML(因为它由浏览器显示)。
我想要做的是将实际的源代码粘贴为纯文本。这可以从 VBA 的剪贴板中获取吗?
编辑 我正在尝试访问复制的 HTML 的所有源代码,包括标签。
这次我已经正确阅读了这个问题,并意识到coonj想要从剪贴板中获取 HTML,包括标签。
我相信这是相当困难的。您需要使用 Windows API 调用来读取剪贴板。然后,解析生成的 CF_HTML 字符串,该字符串在 HTML 顶部添加了一些古怪的标题。
然后,您可能想要忽略古怪的标题。Microsoft 在此处记录格式。下面显示了一个示例 CF_HTML 片段。您可能会想出一些猜测方法来跳过前几行。
Version:0.9
StartHTML:71
EndHTML:170
StartFragment:140
EndFragment:160
StartSelection:140
EndSelection:160
<!DOCTYPE>
<HTML>
<HEAD>
<TITLE>The HTML Clipboard</TITLE>
<BASE HREF="http://sample/specs">
</HEAD>
<BODY>
<!--StartFragment --> <P>The Fragment</P>
<!--EndFragment -->
</BODY>
</HTML>
是否还有其他方法可以解决您的问题也可能值得考虑。例如,浏览器是否总是 Internet Explorer?你能通过使用 COM 对象模型遍历 HTML 树来获得你需要的东西吗?
编辑:coonj现在已经尝试过了,并说“GetHTMLClipboard 功能似乎可以与 Firefox 和 IE 一起使用,而且它看起来不像是把这些标题扔在那里”
VB6 有 Clipboard 对象,允许您获取不同格式的剪贴板数据。VBA 没有这个对象。但是您可以使用 Windows API 调用。您可以在此处查看 VBA 的示例实现。