汇总列excel vba多个外部文件迭代

我有一个VBA代码,用于刷新指定文件夹中的所有Excel数据文件(每个文件中的工作表Analysis )(刷新是通过Excel中的XL3加载项完成的)。 它完美的作品。

Sub refresh_OGSC_data_files() Application.ScreenUpdating = False Dim wb As Workbook Set FileSystemObj = CreateObject("Scripting.FileSystemObject") Set FolderObj = FileSystemObj.GetFolder("C:\ARBEIT\Projects\ONEGSC impact simulation\Part 2\Data\EE") For Each fileobj In FolderObj.Files Set wb = Workbooks.Open(fileobj.Path) ActiveWorkbook.Sheets("AUX").Range("B2") = "12" Application.Run "XL3RefreshGrid", "Analysis!A13" ActiveWorkbook.Save ActiveWorkbook.Close Next fileobj End Sub 

我试图添加到它里面,是一种funcionality,它将在每个这些文件中总结M列,并将这个值“logging”到外部工作簿中的单元格中,例如Book1,Sheet1,Cell A1。 (对于第二个刷新的文件,它将是单元格A2,对于第三个文件单元格A3,依此类推,直到最后一个文件)

我试图插入到相同的代码(保存刷新的文件之前: ActiveWorkbook.Save ):

 Workbooks("Book1.xlsx").Sheets("Sheet1").Activate Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1").Select ActiveCell = WorksheetFunction.Sum(Workbooks("wb").Worksheets("Analysis").Range("m:m")) ActiveCell.Offset(1, 0).Range("A1").Select 

然而,它不工作,可能是完全错误的。 请帮忙。

如果有什么不清楚的话,我会尽量详细说明。

下面是你如何显示使用您的wB参考打开工作簿:

 Sub refresh_OGSC_data_files() Application.ScreenUpdating = False Dim wB As Workbook Dim SumResult As Double Dim OutPutRange As Range Set FileSystemObj = CreateObject("Scripting.FileSystemObject") Set FolderObj = FileSystemObj.GetFolder("C:\ARBEIT\Projects\ONEGSC impact simulation\Part 2\Data\EE") Set OutPutRange = Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A3") For Each fileobj In FolderObj.Files Set wB = Workbooks.Open(fileobj.Path) wB.Sheets("AUX").Range("B2") = "12" Application.Run "XL3RefreshGrid", "Analysis!A13" SumResult = WorksheetFunction.Sum(wB.Sheets("Analysis").Range("M:M")) OutPutRange.Value = SumResult Set OutPutRange = OutPutRange.Offset(1, 0) TotalSum = TotalSum + SumResult wB.Save wB.Close Next fileobj Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1").Value = TotalSum Application.ScreenUpdating = True End Sub 

你需要将下面的代码添加到你计算列M中的总和的循环(你需要将i加1来将行索引增加1)。

下面的代码没有ActivateSelectActiveCell ,但使用合格的RangeWorksheets

 Dim SumSht As Worksheet Dim i As Long Set SumSht = Workbooks("Book1.xlsx").Sheets("Sheet1") i = 1 ' loop here every time to raise the row index (of i) SumSht.Range("A" & i).Value = WorksheetFunction.Sum(wb.Worksheets("Analysis").Range("M:M")) i = i + 1