2013-03-13 5 views
-1

Я новичок в использовании макросов и нуждаюсь в помощи, копируя строки из одного файла excel и вставляя их в другие столбцы. Я сделал первую строку вручную, во время записи макроса и вот код:Макрос для копирования из одного файла excel в другой

Sub Macro2() 

Macro2 Macro 

Range("D5:L5").Select 
Selection.Copy 
Windows("New_SET_Data.xlsx").Activate 
Range("B7").Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 
Windows("Original_SET_Data.xls").Activate 

End Sub 

Это должно быть сделано для нескольких строк, и рабочие листы в пределах первоначального первенствует файла.

+1

поэтому ... возможно, прочитайте ваше сообщение еще раз - и скажите вслух: что ожидали? думаю об этом. – 2013-03-13 15:35:05

+0

Что плохо работает для вас? –

+0

Я просто не уверен, как автоматизировать это и пропустить все строки в одном листе, а затем перейти к следующему листу. Есть что-то вроде цикла while, который будет работать? – user2166059

ответ

1

Поместите свои диапазоны, рабочие таблицы & в качестве переменных, тогда это будет легче работать. Используйте функцию WorksheetFunction «Transpose», чтобы изменить данные - примерно так:

Sub Macro2() 

Dim wb1 as Workbook, wb2 as Workbook 
Dim ws1 as Worksheet, ws2 as Worksheet 
Dim rngSource as Range, Dim rngDest as Range, rngTemp as Range 
Dim varArray() as Variant 

Set wb1 = Workbooks("Original_SET_Data.xls") 
Set wb2 = Workbooks("New_SET_Data.xlsx") 
'To work through all sheets in Original_Set_Data.xls, you can replace this line with a "For each ws1 in wb1.Worksheets" loop and put Next at the end. 
Set ws1 = wb1.Worksheets("Whatever_The_Source_Sheet_Is_Called") 
Set ws2 = wb2.Worksheets("Whatever_The_Destination_Sheet_Is_Called") 

'Find the Source Range & Next Available Destination Column 
Set rngSource = ws1.Range("D5", ws1.Range("D60000").end(xlUp).Address) 
Set rngDest = ws2.Range("IV7").End(xlToLeft).Offset(0,1) 

'Loop through Source Range and Transpose Data 

For each rngTemp in rngSource 
    'Put values from columns D to L into an array 
    varArray = ws1.Range(rngTemp, rngTemp.Offset(0, 8).Value) 
    'Transpose data - there are 9 columns D to L so we resize the range to be 9 rows high 
    rngDest.Resize(9,1).Value = WorksheetFunction.Transpose(varArray) 
    'Move to next column in new sheet 
    Set rngDest = rngDest.Offset(0,1) 
Next 

End Sub 
+0

Он автоматизирует цикл через набор строк и перенос данных в новую электронную таблицу ... он также может быть запущен на нескольких листах WS1 путем циклического обращения к коллекции wb1.Worksheets. – MattCrum

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