需要剪贴板内容的VBA Excel PasteSpecial?

时间:2012-04-26 15:42:31

标签: excel vba copy-paste transpose qlikview

我遇到了VB PasteSpecial的问题 此代码在Excel VB中完美运行(假设您已选择包含数据的单元格)

Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Application.CutCopyMode = False

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

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

Selection.Copy

但是因为我没有先从文档中复制任何东西(即使复制内存中有表数据),这个调用会返回错误的参数异常(如果我先复制那个非常工作簿中的单元格然后只是调用宏来转置它。)

  

返回运行时错误“1004”。 Range类的PasteSpecial方法失败。

是的,我可以将其粘贴到文档中,然后将其从区域中剪切,将其移动到正确的位置并进行转置,但这是错误的编码。

你们有没有经历过这种情况并找到了解决这个问题的方法?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

您无法使用PasteSpecial转置数据的原因是数据的格式,因为它是从QlikView复制后驻留在剪贴板中的。

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

Screenshot of Clipboard viewer showing the different formats that QlikView copies to the clipboard

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

Screenshot of Clipboard viewer showing the different formats that Excel copies to the clipboard

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

如果您要从QlikView中的表格复制到Excel,我建议您在QlikView中使用“Pivot Table”图表来执行QlikView中的换位(因为您可以按照您希望的方式拖动列和行)。否则你将不得不使用Siddharth的代码并在Excel中进行转置。