有没有办法从剪贴板中检索多个项目?我正在使用这样的东西:
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 时,我遇到了一些有关使用剪贴板在不同工作簿之间或在 Excel 到 Word 等 Office 应用程序之间复制数据的参考。为此,您仍然不需要剪贴板,因为 VBA 可以打开远程/外部应用程序/工作簿/文档并直接复制/粘贴数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)