VB Excel粘贴程序是否需要剪贴板内容?

VB Excel粘贴程序是否需要剪贴板内容?,excel,vba,copy-paste,transpose,qlikview,Excel,Vba,Copy Paste,Transpose,Qlikview,我对VB PasteSpecial有问题。 这段代码在Excel VB中工作得非常好(假设您已选择包含数据的单元格) 但是,我使用的是第三方软件(QlikView),我从中提取数据,然后应该将其复制到Excel文档中。正常粘贴没有问题,但必须对其进行转置 显然,由于工作簿中没有任何内容可复制,因此我不使用 Selection.Copy 但由于我不首先复制文档中的任何内容(即使复制内存中有表数据),因此此调用返回错误参数异常(如果我先复制工作簿中的单元格,然后调用宏进行转置,也会发生这种情况)

我对VB PasteSpecial有问题。
这段代码在Excel VB中工作得非常好(假设您已选择包含数据的单元格)

但是,我使用的是第三方软件(QlikView),我从中提取数据,然后应该将其复制到Excel文档中。正常粘贴没有问题,但必须对其进行转置

显然,由于工作簿中没有任何内容可复制,因此我不使用

Selection.Copy
但由于我不首先复制文档中的任何内容(即使复制内存中有表数据),因此此调用返回错误参数异常(如果我先复制工作簿中的单元格,然后调用宏进行转置,也会发生这种情况)

返回运行时错误“1004”。范围类的特殊方法失败

是的,我可以将它粘贴到文档中,然后从该区域剪切,移动到正确的位置并转置,但这是糟糕的编码


你们中有没有人经历过这种情况,并且找到了一种方法来实现这一点?

您必须使用上面提到的方法。你也可以试试这个

Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Application.CutCopyMode = False

但你必须再次复制它并转置它。另一方面,没有直接的方法可以转换它。

您必须使用上面提到的方法。你也可以试试这个

Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Application.CutCopyMode = False

但你必须再次复制它并转置它。另一方面,没有直接的方法可以转置数据。

无法使用PasteSpecial转置数据的原因是,从QlikView复制数据后,数据位于剪贴板中,因此数据的格式不同

当您从QlikView表(我假设您是从中复制)复制数据时,它会以三种格式将数据复制到剪贴板:HTML、Unicode和标准(代码页)文本:

将其与Excel的剪贴板格式进行比较:

如您所见,在Excel中复制数据时,它会以自己的格式将数据存储在剪贴板中,因此知道如何在需要时转置单元格。对于QlikView,剪贴板只包含纯文本,因此Excel不知道如何转置,因此PasteSpecial调用失败


如果您要从QlikView中的表复制到Excel,我建议您在QlikView中执行已经存在的转换,如果可以的话,可以使用QlikView中的“透视表”图表(因为您可以按照自己的意愿拖动列和行)。否则,您将不得不使用Siddharth的代码,并在其进入Excel后进行转置。

无法使用PasteSpecial转置数据的原因是,从QlikView复制数据后,数据位于剪贴板中,因此数据的格式不同

当您从QlikView表(我假设您是从中复制)复制数据时,它会以三种格式将数据复制到剪贴板:HTML、Unicode和标准(代码页)文本:

将其与Excel的剪贴板格式进行比较:

如您所见,在Excel中复制数据时,它会以自己的格式将数据存储在剪贴板中,因此知道如何在需要时转置单元格。对于QlikView,剪贴板只包含纯文本,因此Excel不知道如何转置,因此PasteSpecial调用失败


如果您要从QlikView中的表复制到Excel,我建议您在QlikView中执行已经存在的转换,如果可以的话,可以使用QlikView中的“透视表”图表(因为您可以按照自己的意愿拖动列和行)。否则,您将不得不使用Siddharth的代码,并在Excel中转换它。

我应该将其标记为完整,但忘记了。是的,我想它一定和那样的东西有关,尽管以前从未听说过那个漂亮的小程序。谢谢你的更新/确认+1我本应将此标记为已完成,但忘记了。是的,我想它一定和那样的东西有关,尽管以前从未听说过那个漂亮的小程序。谢谢你的更新/确认+1奇怪的是,为什么它像您在上面写的那样工作,而不是像
ActiveSheet.Range(“A1”).PasteSpecial…”那样工作?
无论如何,这确实帮助解决了一个让我疯狂了几个小时的错误:x。。。谢谢:-)哦,天哪,这是两种不同的方法:&。。。出色的MS:xIt很奇怪,为什么它像你在上面写的那样工作,而不是
ActiveSheet.Range(“A1”).PasteSpecial….
无论如何,这确实帮助解决了一个让我疯狂了几个小时的错误:x。。。谢谢:-)哦,天哪,这是两种不同的方法:&。。。精彩的MS:x