2017-04-08 272 views
0

我试图将一组数据从工作簿复制到另一个工作簿,比方说我要将数据从书A复制到书B.首先,我去Book A复制列表,然后转到Book B在copData宏下面运行(我想在返回到Book B中的前一张之前将数据粘贴到新的工作表上)。粘贴另一个工作簿中的数据excel vba,错误:Worksheet类的粘贴方法失败

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 

回答

0

工作表类的粘贴方法失败,如果没有什么在剪贴板即剪贴板误差也将产生是空的。 因此,要确认剪贴板不是空的,请右键单击表单上的任何单元格,如果粘贴呈灰色,表示剪贴板为空。

+0

感谢sktneer,真正的剪贴板是空的,因为我从视图宏窗口运行它。一旦我点击查看宏,我去书A检查复制区域,该区域已被关闭。代码使用快捷方式或Visual Basic窗口顺利运行。 – Amos

+0

这是问题,否则你的代码很好。 :)如果这有帮助,请花点时间接受解决方案,将您的问题标记为已解决。 – sktneer

0

你必须使用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 
+0

宏由于我从视图宏窗口运行它失败。我根据您的建议修改了我的编码。无论如何,感谢编码整理者。 – Amos