将不同Excel中的相同工作表复制到一个目标Excel文件
我有多个Excel文件,他们都有相同的工作表在他们名为夹具。
我试图复制所有这些(他们都在同一个文件夹),并将其粘贴到我的目标Excel文件的原始Excel文件的名称下。
例如:
[Excel1]Fixture
在运行VBA后, [Excel1]Fixture
将成为名为Excel1的Main.xlsx中的新工作表。 与Excel2,Excel3等相同
请帮忙!
我build议你分四步行动:
- 创build一个工作簿,例如“Collect.xlsx”收集所有“夹具”表
- 获取你的Excel文件名并通过它们循环
- 在循环中,将每个“夹具”表单复制到您的Collect.xlsx
- 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吨片。 祝你好运 :-)