通过打开的工作簿循环

时间:2013-01-19 07:38:04

标签: excel vba

我设法获得了一个代码,用于打开文件夹中存在的所有文件。现在我想在这些文件上逐个运行一个宏(称为donemovementReport),就像它运行一样  一个我保存文件然后在下一个文件上运行。

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

任何有想法的人?

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

1 个答案:

答案 0 :(得分:3)

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

Dim wb As Workbook

For Each wb In Workbooks

    wb.AcceptAllChanges
    Call donemovementReport

Next wb

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

详细了解如何在VBA中引用工作簿:http://www.techrepublic.com/blog/10things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/967(上面的代码是 3 中列出的10个项目。)