首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA剪贴板快速读取

VBA剪贴板快速读取
EN

Stack Overflow用户
提问于 2014-05-07 21:45:42
回答 1查看 406关注 0票数 3

我对快速读取剪贴板上的数据有问题。我有一个程序,它以每秒10次的速度将数据发送到剪贴板,现在在VBA中,我想要增强这些数据。

代码im使用:

代码语言:javascript
运行
复制
Dim clipboard As MSForms.DataObject
Dim strContents As String
Set clipboard = New MSForms.DataObject

Do While True

clipboard.GetFromClipboard
strContents = clipboard.GetText
clipboard.Clear

Myfunc(strContents)

ThisApplication.StatusBarText = strContents  'debug 
If Left(strContents, 1) = 9 Then Exit Sub 'end condition
Set clipboad = Nothing

sleep 100
Loop

End Sub

有问题:这段代码运行了大约2秒,然后我得到了错误: DataObject:GetText 8007000E -内存不足。剪贴板数据是不停止这个相同的。我在每一个循环中清除对象。问题在哪里?我在64位windows 7,64位VBA应用程序,8千兆内存。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 08:43:41

正如Patrick所指出的,您应该将Set clipboard = Nothing移到循环下面。此外,还有一个错误,因为它目前被写为set clipboad = Nothing

此外,在清除剪贴板后插入DoEvents。这将确保操作系统在您再次读取它之前有时间清除它。

您的最终代码应该是这样的:

代码语言:javascript
运行
复制
Dim clipboard As MSForms.DataObject
Dim strContents As String
Set clipboard = New MSForms.DataObject

Do While True
    clipboard.GetFromClipboard
    strContents = clipboard.GetText
    clipboard.Clear
    DoEvents

    Myfunc(strContents)

    ThisApplication.StatusBarText = strContents  'debug 
    If Left(strContents, 1) = 9 Then Exit Sub 'end condition

    sleep 100
Loop

Set clipboard = Nothing
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23529063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档