将不同Excel中的相同工作表复制到一个目标Excel文件

我有多个Excel文件,他们都有相同的工作表在他们名为夹具。

我试图复制所有这些(他们都在同一个文件夹),并将其粘贴到我的目标Excel文件的原始Excel文件的名称下。

例如:

[Excel1]Fixture在运行VBA后, [Excel1]Fixture将成为名为Excel1的Main.xlsx中的新工作表。 与Excel2,Excel3等相同

请帮忙!

我build议你分四步行动:

  1. 创build一个工作簿,例如“Collect.xlsx”收集所有“夹具”表
  2. 获取你的Excel文件名并通过它们循环
  3. 在循环中,将每个“夹具”表单复制到您的Collect.xlsx
  4. closures并保存Collect.xlsx

到2:您可以通过dir()fileDialog获取Excel文件的名称:

  • dir : http : //msdn.microsoft.com/en-us/library/dk008ty4( dir = vs.90).aspx你可以使用它或不使用参数,因此循环通过一个目录。 如果你想要一个简单的循环,或者如果你有数以百计的文件,这是有用的
  • FileDialog :使用Karsten Pries着名的FileDialog。 您可以select多个名称,然后通过它们进行循环。 下载地址: http : //www.kpries.de/download/FileDialog.zip

你的循环可能看起来像这样:

 ... ... fileDialog.Filter1Suffix = "*.xls" fileDialog.Filter1Text = "Excel Dokumente" fileDialog.ShowOpen fileName = fileDialog.fileName Do While fileName <> "" ImportOneSheet fileName ' <<< your own method to collect Fixture fileName = fileDialog.GetNextFile Loop ... 

如果你使用dir ,只需在dir循环中设置你的ImportOneSheet方法。

到3:一些关键的命令是:

  • Application.Workbooks.Open (fileName)
  • Set myExcel = GetObject(, "Excel.Application")
  • Set importWorkBook = Application.ActiveWorkbook
  • importWorkBook.Sheets("Fixture").range("A:ZZ").Copy
  • collectorWorkBook.Sheets(consolidationSheetName).range("A:ZZ").PasteSpecial xlPasteValuesAndNumberFormats, xlPasteSpecialOperationNone, True, False
  • importWorkBook.Close

这些只是给你想法的片段 。 您可能想了解更多关于这些的信息。

到4:使用saveAs命令: xlam.ActiveWorkbook.SaveAs path, xlOpenXMLWorkbook, , , False, False和closures命令: xlam.Workbooks.Close

对于任何剩余的东西,你会发现在networking吨片。 祝你好运 :-)