我有多个Excel文件,它们都有相同的工作表,名为Fixture。
我正在尝试复制它们(它们都在同一个文件夹中)并将它们粘贴到原始Excel文件名下的目标Excel文件中。
例如:
运行VBA后, [Excel1]Fixture
将成为Main.xlsx中名为Excel1的新工作表。与Excel2,Excel3等相同。
请帮忙!
答案 0 :(得分:3)
我建议你分四步采取行动:
至2:您可以通过dir()
或fileDialog
获取Excel文件名:
dir
:
http://msdn.microsoft.com/en-us/library/dk008ty4(v=vs.90).aspx
您可以使用或不使用参数,从而循环使用
目录。如果你想要一个简单的循环,或者你有数百个文件,这很有用。FileDialog
:使用Karsten Pries着名的FileDialog。您可以选择多个名称
然后循环遍历它们。下载: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
,只需在ImportOneSheet
循环中设置dir
方法。
至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
和关闭命令:xlam.Workbooks.Close
。
对于任何剩余的东西,你会在网上找到大量的片段。祝你好运: - )