在特定工作表之后复制工作表

时间:2018-04-03 19:53:31

标签: excel vba excel-vba

我有一个工作簿,其中包含动态数量的工作表。我想提取的相关工作表总是出现在工作表"表3和#34;之后。问题是相关的工作表有动态名称,例如" Apple-A"," Orange-1"等我希望创建一个代码,它将始终复制每个工作表" Sheet 3"无论他们的命名惯例如何。

到目前为止,我只能在专门调用其名称时复制表格,例如

total = Workbooks("Fruits.xlsm").Worksheets.Count
Workbooks("Fruits").Worksheets("Apple-A").Copy_after:=Workbooks("Fruits.xlsm").Worksheets(total)

是否有一种方法可以在调用某个工作表名称后将大量工作表复制到新工作簿中?

2 个答案:

答案 0 :(得分:2)

Workbook.Sheets(index/name)

注意:

定义您正在操作的工作簿始终是一个好主意。接下来让我们仔细看看工作表对象。

使用1 for the first sheet in the workbook,您可以访问特定位置的工作表=索引,例如wb.Sheets("Sheet 3").Index或其名称。

现在,您正在寻找您知道名称的工作表旁边的工作表。

Sheet 3返回wb.Sheets("Sheet 3).Index +1的位置。现在您希望表单正确。这将位于Dim wbSource As Workbook Dim wbTarget As Workbook Set wbSource = Workbooks("Fruits.xlsm") Dim ws As Worksheet Set wbTarget = Workbooks.Add indexOfSheet3 = wbSource.Sheets("Sheet 3").Index For i = indexOfSheet3 + 1 To wbSource.Sheets.Count wbSource.Sheets(i).Copy After:= wbTarget.Sheets(wbTarget.Sheets.Count) Next i 'Delete the defualt sheet Application.DisplayAlerts = False wbTarget.Sheets(1).Delete Application.DisplayAlerts = True

位置

编辑:

我认为该问题已经过编辑,可以复制"所有表格'表3'"

此代码:

{{1}}

答案 1 :(得分:0)

我采用相反的方式:将所有工作表复制到新工作簿并删除其前三个工作表:

Workbooks("Fruits.xlsm").Worksheets.Copy

Dim i As Long
Application.DisplayAlerts = False
For i = 3 To 1 Step - 1
    Worksheets(i).Delete
Next
Application.DisplayAlerts = True