循环打开工作簿

我设法得到一个代码,打开文件夹中的所有文件。 现在我想对这些文件运行一个macros(称为donemovementReport),就像它运行一个我保存该文件,然后运行在下一个。

Macro donemovementreport将这些打开的工作表中的所有数据粘贴到模板中。 我想保存这个模板而不是打开的实际数据的工作簿。

任何人有一些想法?

Sub OpenAllWorkbooks() Set destWB = ActiveWorkbook Dim DestCell As Range FileNames = Application.GetOpenFilename( _ filefilter:="Excel Files (*.csv*),*.csv*", _ Title:="Select the workbooks to load.", MultiSelect:=True) If IsArray(FileNames) = False Then If FileNames = False Then Exit Sub End If End If For n = LBound(FileNames) To UBound(FileNames) Set wb = Workbooks.Open(fileName:=FileNames(n), ReadOnly:=True) Next n 'Dim i As Integer 'i = ActiveWorkbook.AcceptAllChanges 'For i = 1 To ActiveWorkbook Call donemovementReport 'Next i End Sub 

如果我正确理解input,则需要遍历所有打开的工作簿。 这可以使用Workbooks集合来实现。 使用这段代码:

 Dim wb As Workbook For Each wb In Workbooks wb.AcceptAllChanges Call donemovementReport Next wb 

根据需要修改For...Next之间的代码或提供更多input。

阅读有关在VBA中引用工作簿的更多信息: http : //www.techrepublic.com/blog/10things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/967 (上面的代码是项目其中有3个列在那里)。