1

似乎当您将某些内容从 Web 浏览器复制到剪贴板时,至少会存储 2 项内容:

  1. 纯文本
  2. HTML 源代码

然后由您粘贴到的软件来确定它想要哪个。粘贴到MS Excel 2003时,您有一个粘贴特殊选项来粘贴 HTML,它将粘贴格式化的 HTML(因为它由浏览器显示)。

我想要做的是将实际的源代码粘贴为纯文本。这可以从 VBA 的剪贴板中获取吗?

编辑 我正在尝试访问复制的 HTML 的所有源代码,包括标签。

4

2 回答 2

3

这次我已经正确阅读了这个问题,并意识到coonj想要从剪贴板中获取 HTML,包括标签。

我相信这是相当困难的。您需要使用 Windows API 调用来读取剪贴板。然后,解析生成的 CF_HTML 字符串,该字符串在 HTML 顶部添加了一些古怪的标题。

  1. 带有 Windows API 代码的Microsoft 知识库文章,用于从剪贴板读取 CF_HTML(函数 GetHTMLClipboard)。
  2. 然后,您可能想要忽略古怪的标题。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 一起使用,而且它看起来不像是把这些标题扔在那里”

于 2009-03-12T22:41:12.757 回答
0

VB6 有 Clipboard 对象,允许您获取不同格式的剪贴板数据。VBA 没有这个对象。但是您可以使用 Windows API 调用。您可以在此处查看 VBA 的示例实现。

于 2009-03-12T18:33:55.910 回答