我遇到VB PasteSpecial的问题 .
此代码在Excel VB中完美运行(假设您已选择包含数据的单元格)
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
但是,我正在使用第三方软件(QlikView),我从中提取数据,然后将其复制到Excel文档中 . 普通的粘贴没有问题,但是它可以转换为.2728160_ .
显然,由于我没有工作簿中的任何内容要复制,我不使用
Selection.Copy
但是因为我不首先复制文档中的任何内容(即使复制内存中有表数据),此调用返回错误的参数异常(如果我首先复制该非常工作簿中的单元格然后只调用宏,也会发生这种情况)转置它) .
运行时错误'1004'返回 . Range类的PasteSpecial方法失败 .
是的,我可以将其粘贴到文档中,然后将其从区域中剪切,将其移动到正确的位置并进行转置,但这是错误的编码 .
你有没有经历过这个并且有办法让这个工作?
2 回答
您将不得不使用上面提到的方法 . 你也可以试试这个
但是你必须再次复制它并转置它 . 另外,没有直接的方法可以转置它 .
您无法使用PasteSpecial转置数据的原因是数据的格式,因为它在从QlikView复制后驻留在剪贴板中 .
当您从QlikView表(我假设您正在复制)中复制数据时,它会以三种格式将其复制到剪贴板:HTML,Unicode和标准(代码分页)文本:
将其与Excel的剪贴板格式进行比较:
如您所见,在Excel中复制数据时,它会以自己的格式将数据存储在剪贴板中,因此知道如何在需要时转置单元格 . 对于QlikView,剪贴板只包含纯文本,因此Excel不知道如何转置它,因此PasteSpecial调用失败 .
如果您要从QlikView中的表复制到Excel,我建议您在QlikView中使用“数据透视表”图表来执行转置(因为您可以按照您希望的方式拖动列和行) . 否则你将不得不使用Siddharth的代码并在Excel中进行转置 .