Я новичок в VBA, и я пытался создать программу для копирования указанного диапазона c из нескольких рабочих книг, содержащих данные на листе 2, в основной лист рабочей книги 2.
COPY Условие: диапазон столбцов будет от A20 до AS20, в то время как диапазон строк будет зависеть от последней ячейки, имеющей данные в столбце R.
PASTE Условие: последовательно все скопированные ячейки должны быть вставлены в одну пустую строку в промежутке между строкой A20
Условие вставки КОПИИ: диапазон D5: D18 от исходных книг до мастер-листа в режиме перекрытия, поскольку диапазон будет одинаковым во всех исходных книгах.
Я дошёл до следующей стадии, но без идеи идти дальше. Внес некоторые исправления, но они не сработали.
Prog:
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