Добрый день!
Пытаюсь перебрать файлы в папке и копировать данные только из тех, чье имя содержит "20", например.
Код |
---|
Dim abook As Workbook
Set abook = ActiveWorkbook
Dim fileway As String, Objct As String
Dim xlfile As Excel.Workbook
With Application.FileDialog(msoFileDialogFolderPicker)
.ButtonName = "OK"
.Title = "Выбери папку"
If .Show = 0 Then
Exit Sub
End If
fileway = .SelectedItems(1)
End With
Objct = Dir(PathName:=fileway + "\*.xlsx")
Do Until Objct = ""
Set xlfile = Workbooks(fileway + "\" + Objct)
nm = xlfile.Name
If nm Like "*20*.xlsx*" Then
lrg = abook.Sheets("Svod").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("List1").Select
[A1].Copy abook.Sheets("Svod").Cells(lrg + 1, 1)
End If
xlfile.Close
Objct = Dir
Loop
Set xlfile = Nothing |
Вот тут:
Код |
---|
Set xlfile = Workbooks(fileway + "\" + Objct) |
возникает ошибка Subscript out of range
Можно конечно сделать так:
Код |
---|
Set xlfile = Workbooks.Open(fileway + "\" + Objct) |
все работает, но макрос открывает по очереди все книги, а это долго.
Подскажите, пожалуйста какой метод использовать вместо Open