将所有工作表从一个工作簿复制到另一个工作簿

时间:2018-01-24 18:44:39

标签: vba excel-vba excel

我有一个XLTM模板和一个xlsx工作簿。

XLSX工作簿大约有300-400张。

我希望将表格从XLSX复制到XLSM模板。

最快的方法是什么?

我希望使用相同的工作表名称和格式以及值

以下是我正在使用的代码的副本,

For k = 1 To xlWkb.Worksheets.Count
    xlWkb.Activate
    xlWkb.Sheets(k).Select
    xlWkb.Sheets(k).Cells.Copy

    xlWkb2.Activate
    xlWkb2.Sheets("Sheet" & k).Select
    xlWkb2.Sheets("Sheet" & k).Range("A1").Select
    xlWkb2.ActiveSheet.Paste ' changes the column width and all, I want those formats

    xlWkb2.Sheets("Sheet" & k).Name = xlWkb.Sheets(k).Name
Next

2 个答案:

答案 0 :(得分:3)

首先,删除对其有ActivateSelect的行,并将其重组为:

For k = 1 To xlWkb.Worksheets.Count
    xlWkb.WorkSheets(k).Cells.Copy
    xlWkb2.WorkSheets("Sheet" & k).Range("A1").Paste 
    xlWkb2.WorkSheets("Sheet" & k).Name = xlWkb.WorkSheets(k).Name
Next

答案 1 :(得分:2)

请找下一个API

Sheets("SheetName").Copy Before:=Workbooks("WorkbookName").Sheets(1)
Workbooks("WorkbookName").Sheets(1).Name = Sheets("SheetName").Name

此方法使用格式,范围名称,值,公式等复制整个工作表。