访问剪贴板的第N个项目

有没有办法从剪贴板中检索几个项目? 我正在使用这样的东西:

Dim clipboard As MSForms.DataObject Dim str1 As String Dim str2 As String Set clipboard = New MSForms.DataObject clipboard.GetFromClipboard str1 = clipboard.GetText(1) str2 = clipboard.GetText(2) 

但是,我得到一个错误,我给第二个variables分配一个值说:

  Run-time error '-2147221404 (800040064)': DataObject:GetText Invalid FORMATETC Structure 

帮助非常感谢!

原来有两个剪贴板:Windows剪贴板和Office剪贴板。

Office剪贴板最多可容纳24个项目(全部可以是相同的types),而Windows剪贴板只能容纳每种types的一个项目。

  • 复制到Windows剪贴板只需突出显示然后inputCtrl-C即可。
  • 复制到Office剪贴板与突出显示然后键入Ctrl-CC一样简单。 Office剪贴板仅在至less有一个Office应用程序处于打开状态且处于活动状态时才有效。

在VBA中,使用MSForms.DataObject只能访问Windows剪贴板,因此只有一个文本项可用。 经过各种search之后,我无法find如何使用VBA中的Office剪贴板打开/控制/复制/粘贴。

话虽如此,编写和运行VBAmacros时可能没有什么理由使用任何剪贴板。 您可以(临时)将这些值存储在工作表上的未使用单元格中,公共variables中,公共对象中,甚至是私有variables(可能具有可公开访问的属性)中。 所有这些方法与将数据存储在剪贴板中的目的完全相同。

在浏览interwebz这个主题时,我碰到了几个使用剪贴板在不同工作簿之间复制数据的引用,或者在诸如Excel到Word之类的Office应用程序之间复制数据。 您仍然不需要剪贴板,因为VBA可以打开远程/外部应用程序/工作簿/文档并直接复制/粘贴数据。