Excel 使用.SetText将数据存储到剪贴板后,当我尝试将文本粘贴到其他位置时,它是空的
我正在显示一个列表框,用户可以从中选择行。 然后,代码从与该列表项关联的电子表格单元格中读取,并设置一些文本变量。然后将它们连接并存储到一个数组中 最后,读取数组并将字符串复制到剪贴板 但是,当我尝试使用CTRL-v将值粘贴到电子邮件/文本文件时,没有输入任何文本(剪贴板显示为空) 下面是突出的代码 注意。基于列表框中的三行选择的代码Excel 使用.SetText将数据存储到剪贴板后,当我尝试将文本粘贴到其他位置时,它是空的,excel,vba,clipboard,Excel,Vba,Clipboard,我正在显示一个列表框,用户可以从中选择行。 然后,代码从与该列表项关联的电子表格单元格中读取,并设置一些文本变量。然后将它们连接并存储到一个数组中 最后,读取数组并将字符串复制到剪贴板 但是,当我尝试使用CTRL-v将值粘贴到电子邮件/文本文件时,没有输入任何文本(剪贴板显示为空) 下面是突出的代码 注意。基于列表框中的三行选择的代码 Dim LinesOfData() As String 'Other code that doesn't have direct relevance.. bui
Dim LinesOfData() As String
'Other code that doesn't have direct relevance.. builds the strings
Set MyData = New DataObject
MyData.Clear
Dim record As Variant
Dim Indentifier As String
j = 0
For Each record In LinesOfData
Indentifier = "FormatID" & CStr(j)
Debug.Print record
MyData.SetText record, Indentifier
MyData.PutInClipboard
MyData.GetFromClipboard
'
' Test code only
'
If j = 0 Then 'First pass, only 1 record to check
S = MyData.GetText("FormatID0")
Debug.Print S 'Shows correct value
ElseIf j = 1 Then '2nd pass, 2 records to check
S = MyData.GetText("FormatID0")
Debug.Print S 'Shows correct value
S = MyData.GetText("FormatID1")
Debug.Print S 'Shows correct value
ElseIf j = 2 Then
S = MyData.GetText("FormatID0")
Debug.Print S 'Shows correct value
S = MyData.GetText("FormatID1")
Debug.Print S 'Shows correct value
S = MyData.GetText("FormatID2")
Debug.Print S 'Shows correct value
End If
' If I go and try to paste in another appl'n at this point, nothing!
j = j + 1
Next record
' End code
现在,不管我是否退出特定的用户表单或应用程序,我仍然有一个空的剪贴板(尽管能够从代码中的剪贴板读取数据)。正如您所料,我一直在寻找asnwer,事实上我找到了它 这是一个WINDOWS错误 显然,当您打开了两个或多个资源管理器窗口(从windows 8开始)并且在整个测试过程中我都是这样做的时候,就会发生这种情况。曾经我只有一扇窗户开着,维奥拉!成功了 不确定这是否允许。但这是提醒我的线程,在文章的末尾,Debaser提供了使用API调用实现结果的代码
希望其他人会觉得这很有用。正如您所料,我一直在寻找asnwer,事实上我找到了它 这是一个WINDOWS错误 显然,当您打开了两个或多个资源管理器窗口(从windows 8开始)并且在整个测试过程中我都是这样做的时候,就会发生这种情况。曾经我只有一扇窗户开着,维奥拉!成功了 不确定这是否允许。但这是提醒我的线程,在文章的末尾,Debaser提供了使用API调用实现结果的代码 希望其他人会发现这很有用