Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用.SetText将数据存储到剪贴板后,当我尝试将文本粘贴到其他位置时,它是空的_Excel_Vba_Clipboard - Fatal编程技术网

Excel 使用.SetText将数据存储到剪贴板后,当我尝试将文本粘贴到其他位置时,它是空的

Excel 使用.SetText将数据存储到剪贴板后,当我尝试将文本粘贴到其他位置时,它是空的,excel,vba,clipboard,Excel,Vba,Clipboard,我正在显示一个列表框,用户可以从中选择行。 然后,代码从与该列表项关联的电子表格单元格中读取,并设置一些文本变量。然后将它们连接并存储到一个数组中 最后,读取数组并将字符串复制到剪贴板 但是,当我尝试使用CTRL-v将值粘贴到电子邮件/文本文件时,没有输入任何文本(剪贴板显示为空) 下面是突出的代码 注意。基于列表框中的三行选择的代码 Dim LinesOfData() As String 'Other code that doesn't have direct relevance.. bui

我正在显示一个列表框,用户可以从中选择行。 然后,代码从与该列表项关联的电子表格单元格中读取,并设置一些文本变量。然后将它们连接并存储到一个数组中

最后,读取数组并将字符串复制到剪贴板

但是,当我尝试使用CTRL-v将值粘贴到电子邮件/文本文件时,没有输入任何文本(剪贴板显示为空)

下面是突出的代码

注意。基于列表框中的三行选择的代码

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调用实现结果的代码

希望其他人会发现这很有用