有没有办法从剪贴板中检索多个项目?我正在使用这样的东西:
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
非常感谢帮助!
答案 0 :(得分:1)
原来有两个剪贴板:Windows剪贴板和Office剪贴板。
Office剪贴板最多可以容纳24个项目(所有类型都可以是相同类型),而Windows剪贴板只能容纳每种类型的一个项目。
在VBA中,使用MSForms.DataObject只能访问Windows剪贴板,因此只有一个文本项可用。经过各种搜索后,我无法找到如何使用VBA中的Office剪贴板打开/控制/复制/粘贴。
说了这么多,在编写和运行VBA宏时,几乎没有理由使用任何剪贴板。您可以(暂时)将这些值存储在工作表,公共变量,公共对象或甚至私有变量(可能具有公共可访问属性)的未使用单元格中。所有这些方法与在剪贴板中存储数据的目的完全相同。
在浏览关于此主题的interwebz时,我遇到了几个使用剪贴板在不同工作簿之间或Excel之间的应用程序之间复制数据的引用。您仍然不需要剪贴板,因为VBA可以打开远程/外部应用程序/工作簿/文档并直接复制/粘贴数据。