Я новичок в VBA, и я пытался создать программу для копирования определенного диапазона из нескольких книг, содержащих данные на листе 2, на лист основной книги 2.
Условие копирования: диапазон столбцов будет от A20 до AS20, а диапазон строк будет зависеть от последней ячейки, содержащей данные в столбце R.
Условие PASTE: последовательно все скопированные ячейки должны быть вставлены с одной пустой строкой между ними, начиная со строки A20
Условие копирования и вставки: диапазон D5: D18 из исходных книг в мастер-лист с перекрытием, поскольку диапазон будет одинаковым для всех исходных книг.
Я дошел до нижнего этапа, но не знал, что делать дальше. Внесены некоторые исправления, но работать не удалось.
Прог:
Sub copyDataFromMultipleWorkbooksIntoMaster()
Dim FileItem As Object
Dim oFolder As Object
Dim FSO As Object
Dim BrowseFolder As String
Dim masterBook As Workbook
Dim sourceBook As Workbook
Dim insertRow As Long
Dim copyRow As Long
insertRow = 20
Set masterBook = ThisWorkbook
Set FSO = CreateObject("Scripting.FileSystemObject")
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select the folder with source files"
If Not .Show = 0 Then
BrowseFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Application.ScreenUpdating = False
Set oFolder = FSO.getfolder(BrowseFolder)
masterBook.Sheets("Service Order Template").Cells.UnMerge
For Each FileItem In oFolder.Files
If FileItem.Name Like "*.xls*" Then
Workbooks.Open (BrowseFolder & Application.PathSeparator & FileItem.Name)
Set sourceBook = Workbooks(FileItem.Name)
With sourceBook.Sheets("Service Order Template")
.Cells.UnMerge
copyRow = .Cells(Rows.Count, 18).End(xlUp).Row
Range(.Cells(20, 1), .Cells(copyRow, 45)).Copy Destination:=masterBook.Sheets("Service Order Template").Cells(insertRow, 1)
Application.CutCopyMode = False
.Parent.Close SaveChanges:=False
End With
insertRow = masterBook.Sheets("Service Order Template").Cells(Rows.Count, 18).End(xlUp).Row + 2
End If
Next
Application.ScreenUpdating = True
End Sub