这个excel的vba设置变量的值到剪贴板为什么老是出错呢

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub send_msg()
Dim arr() As Variant, x, y As Integer, my_clip As New DataObject

arr = Application.Selection

Application.SendKeys "^%w"
Sleep 400

For x = 1 To UBound(arr, 1)

my_clip.SetText arr(x, 1)
my_clip.PutInClipboard

Sleep 100

Application.SendKeys "^f", True
Sleep 100

Application.SendKeys "^v", True
Sleep 100

Application.SendKeys "~"
Sleep 100

my_clip.SetText arr(x, 2)
my_clip.PutInClipboard
Sleep 100

Application.SendKeys "^v"

Application.SendKeys "~"
Sleep 100
Application.SendKeys "~"

Next x

End Sub

在运行时经常提示错误,有时候又可以,不知道是哪里的错误呢运行时错误‘-2147221040(800401d0)’:dataobject:PutInClipboard OpenClipboard失败

第1个回答  2013-12-29
对于有时错误有时能通过得宏,在出错行的上一行插入一段延迟1秒或更长时间的代码试试。追问

好像延迟时间可以了,不知道延时还有其他方法吗,这个发送按键反应有点慢呢

今天装了2003完整版 运行时 提示找不到工程或库 ,声明中的这一句 my_clip As New DataObject 被选中,不知道是哪里的错误呢,下面这些是选中的

第2个回答  2013-12-30
把Dim arr() As Variant, x, y As Integer, my_clip As New DataObject改成:
Dim arr() As Variant, x, y As Integer
set my_clip = New DataObject
你看看是否可行?追问

今天装了2003完整版 运行时 提示找不到工程或库 ,声明中的这一句 my_clip As New DataObject 被选中,不知道是哪里的错误呢,下面这些是选中的

追答

你新建个Form窗体看看

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网