错误1004:范围类的PasteSpecial方法失败

我有一点麻烦,我想从另一个工作簿复制一列到一个新的工作簿并转置它,但我有一个错误,如: Error 1004: PasteSpecial method of range class failed

 Private Sub CommandButton1_Click() ActiveSheet.Range("C2:C30").Copy Workbooks.Open Filename:="E:\PENDIDIKAN_BJN\SUM.xlsx" eColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column If eColumn >= 1 Then eColumn = eColumn + 1 ActiveSheet.Cells(1, eColumn).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, Skipblanks:=False, Transpose:=True ActiveWorkbook.Save ActiveWorkbook.Close Application.CutCopyMode = False End Sub 

问题的原因

您试图将单元格C2复制到C30,将29个单元格(30-2 + 1)复制到另一个工作簿。 换句话说,将这些单元格粘贴为29列的单行。

在其他工作簿中,select“dynamic”列, If eColumn >= 1 Then eColumn = eColumn + 1 ,因此您不一定需要select需要执行粘贴的29列。

最后的结果是错误消息Error 1004: PasteSpecial method of range class failed

其中一个解决scheme是直接select正确数量的列来粘贴数据,如下所示:

 Private Sub CommandButton1_Click() ActiveSheet.Range("C2:C30").Copy ' Store the number of rows selected in the eColumn associated before opening the other file ' Since this is a transposition the number of rows is the same as the target number of columns eColumn = Selection.Rows.Count Workbooks.Open Filename:="E:\PENDIDIKAN_BJN\SUM.xlsx" ActiveSheet.Cells(1, eColumn).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, Skipblanks:=False, Transpose:=True ActiveWorkbook.Save ActiveWorkbook.Close Application.CutCopyMode = False End Sub