Пример ниже, где диапазон от A2 до ячейки содержит «КОНЕЦ» в столбце А листа «Счетчик месяцев» в ActiveWorbook, затем откройте вторую книгу (я использовал C:\test\other.xlsm"
, переход на лист).«A», а затем поместите
- A2 из первой книги в A2 второй книги,
- B2 из первой книги в A3 во второй книге,
- A3 из первой книги в A4 во второй книге,
- B3 из первой книги в A5 во второй книге и т. Д.
Обратите внимание, что в вашем коде, который вы в данный момент открываетеновый экземпляр Excel, вы должны работать с обеими книгами в одном экземпляре, чтобы они могли «общаться»
Sub aggregate()
Dim Wb1 As Workbook
Dim Wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim lngRow As Long
Dim lngCalc As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
lngCalc = .Calculation
End With
Set Wb1 = ActiveWorkbook
Set ws1 = Wb1.Sheets("Month Count")
Set rng1 = ws1.Columns("A").Find("THE END", , xlValues, xlWhole)
If rng1 Is Nothing Then
MsgBox "Did not find marker cell"
GoTo QuickExit
End If
Set rng1 = ws1.Range(ws1.[a2], ws1.Cells(rng1.Row, "A"))
Set Wb2 = Workbooks.Open("C:\test\other.xlsm")
Set ws2 = Wb2.Sheets("A")
For Each rng2 In rng1
ws2.[a2].Offset(lngRow, 0) = rng2
ws2.[a2].Offset(lngRow + 1, 0) = rng2.Offset(0, 1)
lngRow = lngRow + 2
Next
Wb2.Save
Wb2.Close
Wb1.Activate
QuickExit:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
End With
End Sub