Sub IMPORT_P() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction
' Открыть файл wb.Sheets("Лист1").Range("C7:C400").Font.Color = vbBlack Dim oFileSystemObject As Object: Set oFileSystemObject = CreateObject("Scripting.FileSystemObject") If oFileSystemObject.FileExists(wb.Path & "\File.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\File.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставить wb.Sheets("Лист1").Range("C7") = wf.Sum(srcBook.Sheets("Data").Range("GE9,GE30")) wb.Sheets("Лист1").Range("C8") = wf.Sum(srcBook.Sheets("Data").Range("F9,F30")) wb.Sheets("Лист1").Range("C9") = wf.Sum(srcBook.Sheets("Data").Range("U9,U30"))
wb.Sheets("Лист1").Range("C7:C9").Font.Color = vbRed srcBook.Close SaveChanges:=False End If If oFileSystemObject.FileExists(wb.Path & "\File2.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\File2.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставить wb.Sheets("Лист1").Range("C10") = wf.Sum(srcBook.Sheets("Data").Range("GE9,GE30")) wb.Sheets("Лист1").Range("C11") = wf.Sum(srcBook.Sheets("Data").Range("F9,F30")) wb.Sheets("Лист1").Range("C12") = wf.Sum(srcBook.Sheets("Data").Range("U9,U30"))
wb.Sheets("Лист1").Range("C10:C12").Font.Color = vbRed srcBook.Close SaveChanges:=False End If End Sub
[/vba] Прошу помочь изменить его с такой задачей: Есть папка, в ней находятся файлы *.xls, необходимо в файле с макросом создать список из названий файлов (без расширения), напротив каждого просуммировать несколько ячеек каждого из файлов. У файлов с данными одинаковая структура, то есть суммировать надо одни и те же ячейки, но в разных файлах
Имеется часть кода [vba]
Код
Sub IMPORT_P() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction
' Открыть файл wb.Sheets("Лист1").Range("C7:C400").Font.Color = vbBlack Dim oFileSystemObject As Object: Set oFileSystemObject = CreateObject("Scripting.FileSystemObject") If oFileSystemObject.FileExists(wb.Path & "\File.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\File.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставить wb.Sheets("Лист1").Range("C7") = wf.Sum(srcBook.Sheets("Data").Range("GE9,GE30")) wb.Sheets("Лист1").Range("C8") = wf.Sum(srcBook.Sheets("Data").Range("F9,F30")) wb.Sheets("Лист1").Range("C9") = wf.Sum(srcBook.Sheets("Data").Range("U9,U30"))
wb.Sheets("Лист1").Range("C7:C9").Font.Color = vbRed srcBook.Close SaveChanges:=False End If If oFileSystemObject.FileExists(wb.Path & "\File2.xls") Then Set srcBook = Workbooks.Open(Filename:=wb.Path & "\File2.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставить wb.Sheets("Лист1").Range("C10") = wf.Sum(srcBook.Sheets("Data").Range("GE9,GE30")) wb.Sheets("Лист1").Range("C11") = wf.Sum(srcBook.Sheets("Data").Range("F9,F30")) wb.Sheets("Лист1").Range("C12") = wf.Sum(srcBook.Sheets("Data").Range("U9,U30"))
wb.Sheets("Лист1").Range("C10:C12").Font.Color = vbRed srcBook.Close SaveChanges:=False End If End Sub
[/vba] Прошу помочь изменить его с такой задачей: Есть папка, в ней находятся файлы *.xls, необходимо в файле с макросом создать список из названий файлов (без расширения), напротив каждого просуммировать несколько ячеек каждого из файлов. У файлов с данными одинаковая структура, то есть суммировать надо одни и те же ячейки, но в разных файлахakaDemik
Sub WWW() Dim iFail$, aFail$, iPath$, Fail$ Application.ScreenUpdating = 0 iPath = "D:\000\" 'Указываем свой путь 'iPath = ThisWorkbook.Path & "\" 'если рабочий файл в этой же папке iMask = "XLS" iFail = Dir(iPath) S = 3 Do While iFail <> "" 'цикл, пока в папке есть файлы If UCase(Right(iFail, 3)) = iMask Then 'проверка на xls If Not iFail = ThisWorkbook.Name Then Application.Workbooks.Open Filename:=iPath & iFail 'открываем найденный файл n = InStrRev(iFail, ".") - 1 'Находим точку в имени Fail = Mid(iFail, 1, n) 'Выделяем Имя без расширения With Workbooks(iFail).Sheets(1) X = Range("A1") ' данные для отбора End With Workbooks(iFail).Close 'закрываем найденный файл Cells(S, 2) = Fail ' пишем его имя Cells(S, 3) = X 'пишем данные S = S + 1 End If End If iFail = Dir 'переходим к следующему Loop Application.ScreenUpdating = 1 End Sub
[/vba]
Вот нашел в архиве примеров. Юзайте.
[vba]
Код
Sub WWW() Dim iFail$, aFail$, iPath$, Fail$ Application.ScreenUpdating = 0 iPath = "D:\000\" 'Указываем свой путь 'iPath = ThisWorkbook.Path & "\" 'если рабочий файл в этой же папке iMask = "XLS" iFail = Dir(iPath) S = 3 Do While iFail <> "" 'цикл, пока в папке есть файлы If UCase(Right(iFail, 3)) = iMask Then 'проверка на xls If Not iFail = ThisWorkbook.Name Then Application.Workbooks.Open Filename:=iPath & iFail 'открываем найденный файл n = InStrRev(iFail, ".") - 1 'Находим точку в имени Fail = Mid(iFail, 1, n) 'Выделяем Имя без расширения With Workbooks(iFail).Sheets(1) X = Range("A1") ' данные для отбора End With Workbooks(iFail).Close 'закрываем найденный файл Cells(S, 2) = Fail ' пишем его имя Cells(S, 3) = X 'пишем данные S = S + 1 End If End If iFail = Dir 'переходим к следующему Loop Application.ScreenUpdating = 1 End Sub