2016-02-02 3 views
0

У меня есть 7 книг, которые имеют одинаковый формат на каждом листе. Я хочу захватить «Sheet2» из каждой книги и вставить их в мастер-лист в отдельной книге. Мне удалось это сделать, но вставка продолжает переписывать последнюю пасту. Как я могу вставить ниже последней вставленной записи?Копирование листов из разных книг и вставка в лист в другой книге

я это для каждого из 7 листов

Sub MoveHR() 
Dim x As Workbook 
Dim y As Workbook 

'## Open both workbooks first: 
Set x = Workbooks.Open("\\ukkh1-afp-sv1o\Shared\Sales\Field Sales - 

ERN\DSRs\. DSR's February 2016\HRehman February.xlsm") 
Set y = Workbooks.Open("\\ukkh1-afp-sv1o\Shared\Sales\Field Sales - ERN\DSRs\Trackers\SIMPosa Tracker.xlsm") 

'Now, copy what you want from x: 
x.Sheets("SIMPosa").Range("A:J").Copy 

'Now, paste to y worksheet: 
y.Sheets("Current Month").Range("A1").PasteSpecial xlPasteValues 

'Close x: 
Application.CutCopyMode = False 
x.Close False 
y.Close True 
End Sub 
+0

Немного offtopic: Я предлагаю вам всегда выписывать свои команды, даже если вам это технически не нужно. Это упрощает чтение кода, и как только вы начнете писать более длинный код, это может действительно помочь вам. Поэтому я бы предложил написать: x.Close SaveChanges: = False – RobK

ответ

0

Попробуйте добавить петлю, чтобы найти следующую пустую строку, как это:

dim i as integer 
i=1 

do until y.sheets("Current Month").cells(i,1).value="" 
    i=i+1 
loop 

y.Sheets("Current Month").Cells(i,1).PasteSpecial xlPasteValues 
0

Измените эту строку:

y.Sheets("Current Month").Range("A1").PasteSpecial xlPasteValues 

к настоящему времени:

y.Sheets("Current Month").Range("A" & y.Sheets("Current Month").Rows.Count).End(xlup).Offset(1)).PasteSpecial xlPasteValues 

Вторая строка является эквивалентом перехода к последней строке на листе и удалению Ctrl+Up и для поиска последней строки с данными, а затем смещения ее на 1 строку для вставки новых данных.

Смежные вопросы