使用VBA将整个Excel工作簿复制到另一个工作簿

我有一个包含4个工作表的工作簿(“Initial Workbook”)。
我需要将全部四个工作表复制到不同的工作簿(“新工作簿”)。

我有下面的代码,它允许我从新工作簿导航到初始工作簿,然后复制一个工作表上的特定范围。 我想修改这个以允许我select并复制原始工作表上的所有四个工作表。

您可以提供的任何帮助将不胜感激:

Private Sub CommandButton1_Click() Dim wkbCrntWorkBook As Workbook Dim wkbSourceBook As Workbook Dim rngSourceRange As Range Dim rngDestination As Range Set wkbCrntWorkBook = ActiveWorkbook With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "Excel 2002-03", "*.xls", 1 .Filters.Add "Excel 2007", "*.xlsx; *.xlsm; *.xlsa", 2 .AllowMultiSelect = False .Show If .SelectedItems.Count > 0 Then Workbooks.Open .SelectedItems(1) Set wkbSourceBook = ActiveWorkbook Set rngSourceRange = Application.InputBox(prompt:="Select source range", Title:="Source Range", Default:="$A:$CS", Type:=8) wkbCrntWorkBook.Activate Set rngDestination = Application.InputBox(prompt:="Select destination cell", Title:="Select Destination", Default:="A1", Type:=8) rngSourceRange.Copy rngDestination rngDestination.CurrentRegion.EntireColumn.AutoFit wkbSourceBook.Close False End If End With End Sub 

奇迹般有效:

 ActiveWorkbook.Sheets.Copy 

(来源: http : //www.mrexcel.com/forum/excel-questions/404450-visual-basic-applications-copy-active-workbook-new-workbook.html )

这个重做的代码应该复制你的工作表:

 Private Sub CommandButton1_Click()
    昏暗的wkbSource作为工作簿
    昏暗的wkbTarget作为工作簿“更好地使用源和目标作为名称,因为它较less混淆
     Dim strFileName As String

    设置wkbSource = ActiveWorkbook

     strFileName = Application.GetOpenFilename(_
         “Excel 2002-03(* .xls),* .txt,”&_
         “Excel 2007(* .xlsx; * .xlsm; * .xlsa),* .xlsx; * .xlsm; * .xlsa”)

    如果strFileName =“False”然后退出Sub'确保您的语言环境也返回False!

    设置wkbTarget = Workbooks.Open(strFileName)
     wkbSource.Sheets(Array(“Sheet1”,“Sheet2”,“Sheet3”,“Sheet4”))。Copy _
        之前:= wkbTarget.Sheets(1)
     “进一步的编辑在这里

     wkbTarget.Close False

结束小组

只需根据您的需要replace表格名称即可。

(PS:你可以自己find这些命令,如果你简单地logging一个macros,在那里把表单复制到另一个工作簿 – 然后看看生成的代码!–))