[英]Copy and paste Excel sheets
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 工作表上的一個按鈕。 然后用戶找到他們想要將工作表復制到的文件。 它將找到所有特定類型的工作表,將其放入表單組合框中並打開選定的 Excel 文件。 然后從組合框中選擇一張工作表並將其從一個工作簿復制到另一個工作簿。 這一切都有效,直到復制部分。 我收到一個很長的錯誤:
Excel 無法將工作表插入到目標工作簿中,因為它包含的行和列少於源工作簿。 要將數據移動或復制到目標工作簿,您可以選擇數據,然后使用復制和粘貼命令將其插入到另一個工作簿的工作表中。
如果目標工作簿來自舊版本的 Excel(例如,擴展名為 .xls,Excel 97 或 Excel 2003),則舊工作表中的行數限制為 2^16-1,因為行號以 16 位編碼. 在較新的版本中,此數字以 32 位編碼。
因此,將工作表從新版本“作為一個整體”復制到舊版本的工作簿中會引發此錯誤。 根據我的測試,即使復制的工作表中實際使用的范圍很小,也會發生此錯誤。
我有同樣的問題。 按照@ASG 的建議,我使用新文件格式 (xlsx) 保存舊工作簿,關閉並重新打開它,之后一切正常。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.