2013-05-01 144 views
1

我想寫一個宏,它將打開30個全部具有相同結構的excel文件。VBA:打開多個文件並在所有打開的文件上執行宏

宏應對所有文件執行操作,並從每個文件中獲取結果並將其放入另一個excel文件中。這意味着:所有結果(值)都將被複制到目標文件中。

  1. 如何編寫VBA代碼以打開多個文件?

  2. 如何從每個文件中獲取結果並將它們放在我的destination.xls文件中?

+0

也 - 出於興趣 - 做所有的Excel文件有一個共同的命名約定?你如何存儲這些文件名?陣列?常見的命名可能是最好的,就像 - MyFilei.xls是我是一個數字,你循環他們(For循環),並獲得結果輪流 – Katana24 2013-05-01 13:58:37

回答

2

嘗試檢查出FileSearch.LookIn Property
修改例子類似的東西。 (這就要求所有的30個文件的一個文件夾中雖然)

Dim WrkBook as Workbook 
Set fs = Application.FileSearch 
With fs 
    .SearchSubFolders = False 
    .LookIn = "C:\My Documents" 'Path of folder to search 
    .FileName = "*.xls" 'Limit to excel files 
    If .Execute > 0 Then 
     Debug.Print "There were " & .FoundFiles.Count & " file(s) found." 
     For i = 1 To .FoundFiles.Count 
      WrkBook = Workbooks.Open(Filename:=.FoundFiles(i)) 
      WrkBook.Worksheets(1).Select 
      ThisWorkbook.Worksheets(1).Cells(DestinationRange) = WrkBook.Worksheets(1).Cells(SourceRange).Value 
     Next i 
    Else 
     Debug.print "There were no files found." 
    End If 
End With 

您也可以嘗試

Workbooks("Destination.xls").Worksheets("Sheet1").Cells(DestinationRange) = WrkBook.Worksheets(1).Cells(SourceRange).Value