簡體   English   中英

復制和粘貼 Excel 工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM