2013-03-13 149 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 

这需要多行做的,和原来的工作表中的Excel文件。

+1

因此......可能再次读您的文章 - 并大声说出:什么预计?考虑一下。 – 2013-03-13 15:35:05

+0

什么不适合你? – 2013-03-13 15:35:17

+0

我只是不知道如何自动执行此操作,并让它遍历一个工作表中的所有行,然后转到下一个工作表。有没有什么可以做的while while循环,将工作? – user2166059 2013-03-13 15:45:24

回答

1

将您的范围,工作表&工作簿放入变量中,然后更容易解决。使用WorksheetFunction“转置”来更改数据 - 如下所示:

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

它自动循环遍历一组行并将数据转置到新电子表格中......它也可以通过循环wb1.Worksheets集合运行在多个WS1表单上。 – MattCrum 2013-03-13 16:46:56

相关问题