复制并粘贴Excel工作表

Private Sub CommandButton1_Click() Dim ws As Worksheet With Application.FileDialog(msoFileDialogFilePicker) .Show If .SelectedItems.Count <> 0 Then fldr = .SelectedItems(1) End If End With Sheets.link.Value = fldr For i = 1 To Worksheets.Count Set ws = Worksheets(i) If ws.Cells(2, 1) = "X" Then Sheets.ComboBox1.AddItem (ws.Name) End If Next i Workbooks.Open (fldr) Sheets.Show End Sub Private Sub Add_Click() Dim x As String Dim ws As Workbook x = Right(link.Value, (Len(link.Value) - InStrRev(link.Value, "ild") - 3)) Workbooks("Test.xlsm").Activate Worksheets(ComboBox1.Value).Copy Before:=Workbooks(x).Worksheets("Contract") End Sub 

所以基本的想法是,你点击一个Excel工作表上的button。 用户然后find他们想要复制表单的文件。 它会查找所有特定types的表单,将其放在表单combobox中并打开选定的Excel文件。 然后,您从combobox中select一个工作表并将其从一个工作簿复制到另一个工作簿。 这一切都工作,直到复制的一部分。 我得到一个很长的错误:

Excel不能将工作表插入到目标工作簿中,因为它包含更less的源工作簿的行和列。 要将数据移动或复制到目标工作簿,可以select数据,然后使用“复制”和“粘贴”命令将其插入到其他工作簿的工作表中。

如果目标工作簿来自旧版本的Excel(扩展名为.xls,例如Excel 97或Excel 2003),则旧的工作表中的行数限制为2 ^ 16-1,因为行号是以16位。 在较新的版本中,这个数字被编码在32位上。

因此,将工作表从一个较新的版本“整体”复制到旧版本的工作簿引发了这个错误。 在我的testing中,即使复制的工作表中实际使用的范围很小,也会发生此错误。