excel – 访问剪贴板的第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)

但是,我得到一个错误,我在第二个变量中指定了一个值,该变量说明如下:

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

非常感谢帮助!

最佳答案 原来有两个剪贴板:Windows剪贴板和Office剪贴板.

Office剪贴板最多可以容纳24个项目(所有类型都可以是相同类型),而Windows剪贴板只能容纳每种类型的一个项目.

>复制到Windows剪贴板就像突出显示一样简单
键入Ctrl-C.
>复制到Office剪贴板非常简单
突出显示然后键入Ctrl-CC. Office剪贴板仅处于活动状态
如果至少有一个Office应用程序打开并处于活动状态
时间.

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

说了这么多,在编写和运行VBA宏时,几乎没有理由使用任何剪贴板.您可以(暂时)将这些值存储在工作表,公共变量,公共对象或甚至私有变量(可能具有公共可访问属性)的未使用单元格中.所有这些方法与在剪贴板中存储数据的目的完全相同.

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

点赞