VB / VBA:从剪贴板获取HTMLstring(通过网页浏览器复制)

看起来,当你从网页浏览器复制一些东西到剪贴板时,至less存储了两件东西:

  1. 纯文本
  2. HTML源代码

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

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

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

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

我相信这是相当困难的。 您需要使用Windows API调用来读取剪贴板。 然后,parsing在HTML之上添加了一些古怪头文件的CF_HTMLstring。

  1. 带有Windows API代码的Microsoft知识库文章 ,从剪贴板(函数GetHTMLClipboard)读取CF_HTML。
  2. 那么你可能会想忽略古怪的标题。 微软在这里logging格式。 下面显示了一个示例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> 

也许值得思考是否有其他方式来解决你的问题。 E,g,浏览器一定是Internet Explorer吗? 你可以通过使用COM对象模型行走HTML树来获得所需的东西吗?

编辑: coonj已经试过这个现在,并说:“GetHTMLClipboard函数似乎与Firefox和IE浏览器都工作,它看起来不像是在那里扔这些标题”

VB6有剪贴板对象,允许您以不同的格式获取剪贴板数据。 VBA没有这个对象。 但是有可以使用的Windows API调用。 你可以在这里看到一个VBA实例。