【问题标题】:Paste data from another workbook excel vba, error: Paste method of Worksheet class failed从另一个工作簿excel vba粘贴数据,错误:工作表类的粘贴方法失败
【发布时间】:2017-09-03 17:01:36
【问题描述】:

我正在尝试将一组数据从一个工作簿复制到另一个工作簿,假设我要将数据从 A 簿复制到 B 簿。首先,我去 A 簿复制列表,然后去Book B 在 copydata 宏下运行(我想将数据粘贴到新工作表上,然后再返回 Book B 中的上一张工作表。)

Sub copydata()

Dim lstviewpg As String
lstviewpg = ActiveSheet.Name
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "newsheet"
Sheets("newsheet").Activate
ActiveSheet.Paste
Sheets(lstviewpg).Activate

End Sub

由于 Worksheet 类的 Paste 方法失败,宏在第 6 行失败。有人知道如何解决吗?

ActiveSheet.Paste

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果剪贴板上没有任何内容,即剪贴板为空,也会产生 Worksheet 类的粘贴方法失败错误。 因此,要确认剪贴板不为空,请右键单击工作表上的任何单元格,如果粘贴显示为灰色,则表示剪贴板为空。

    【讨论】:

    • 感谢 sktneer,剪贴板确实是空的,因为我从查看宏窗口运行它。单击查看宏后,我会转到 Book A 检查复制区域,该区域已关闭。代码可以使用快捷方式或通过 Visual Basic 窗口顺利运行。
    • 这就是问题,否则您的代码就可以了。 :) 如果这有帮助,请花点时间接受解决方案,将您的问题标记为已解决。
    【解决方案2】:

    你必须使用PasteSpecial()

    此外,您可以简化一点:

    Sub copydata()
    
        Dim lstviewpg As String
        lstviewpg = ActiveSheet.Name
    
        With Sheets.Add(After:=Sheets(Sheets.Count)) '<--| add a new sheet and reference it
            .Name = "newsheet" '<--| set the name of referenced sheet
            .PasteSpecial '<--| paste data
        End With
        Sheets(lstviewpg).Activate
    
    End Sub
    

    【讨论】:

    • 宏因我从查看宏窗口运行而失败。我根据您的建议修改了我的编码。无论如何,谢谢,使编码更整洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2017-09-08
    • 2023-04-10
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多