首页 文章

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

提问于
浏览
1

我遇到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 回答

  • 2

    您将不得不使用上面提到的方法 . 你也可以试试这个

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

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

  • 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中使用“数据透视表”图表来执行转置(因为您可以按照您希望的方式拖动列和行) . 否则你将不得不使用Siddharth的代码并在Excel中进行转置 .

相关问题