【发布时间】:2015-11-04 19:32:37
【问题描述】:
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。对吗?
-
在答案部分写一些东西,这样我也可以接受,因为你是对的。我使用的是.xlsm,而我要复制到的是.xls。当我将它保存为 .xlsm 时,它起作用了。
-
我很高兴它有所帮助。好吧,别担心,重要的是问题解决了。无论如何,谢谢你的好意;)
-
@A.S.H 我建议您将其作为答案,以便将来寻找类似帖子的用户可以轻松找到解决方案。问候,
-
@nbayly 好的,事实上,我测试过它,有趣的是,即使使用的范围很小,它似乎也会发生。这是一个兼容性问题,因此我认为它值得一个全面的答案。谢谢你的建议:)