Hi Moon,
Sorry that wasn't meant to be a reply, I hadn't even seen
the posting, don't know what happened.
Based on the original question, I came up with
Sub Macro1()
Dim wsSheet As Worksheet
Dim wsWorkbook As Workbook
Set wsWorkbook = ActiveWorkbook
Set wsSheet = ActiveSheet
Windows("workbookC_2.xls").Activate
Sheets("sheet1").Activate
Range("a:b").Copy
wsWorkbook.Activate
wsSheet.Activate
Range("D1").Select
ActiveSheet.Paste
End Sub
which would place the data from the second workbook columns
D:E to the right of Columns A:C of the current workbook.
Since you have to specify the second workbook name and
the sheet within that workbook within the macro, I don't really
see what is going to be gained from the macro if that is all it is to
do, because it might just be faster to open the second workbook
manually, make the selection in the desired worksheet manually
and paste back to the original worksheet. In any case for the
macro both workbooks must be open.
The last sentence looked confusing, but your reply cleared that up.
I don't understand why you want to waste the space within the used range in two quadrants. But it appears rather than
A1_1 B1_1 C1_1 D1_2 E1_2
A2_1 B1_1 C2_1 D2_2 E2_2
you want
A1_1 B1_1 C1_1
A2_1 B1_1 C2_1
D1_2 E1_2
D2_2 E2_2
Sub Macro1()
Dim wsSheet As Worksheet
Dim wsWorkbook As Workbook
Set wsWorkbook = ActiveWorkbook
Set wsSheet = ActiveSheet
'-- prepare to active cell on original sheet to receive paste
'-- based on content of last cell in column A, and offset
'-- over to column D i.e. 3 columns over
Cells(Rows.Count, 1).End(xlUp).Offset(1, 3).Select
'-- you have to specify the second workbook name and worksheet name
Windows("workbookC_2.xls").Activate
Sheets("sheet1").Activate
'-- can't paste entire columns except at top of another
'-- so have to reduce scope of the cells to be copied
Intersect(ActiveSheet.UsedRange, Range("a:b")).Copy
wsWorkbook.Activate
wsSheet.Activate
ActiveSheet.Paste
End Sub