Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi all, i've a little problem.
i've to copy data from one file to its updated version. let's say: My.T.y.M.xls is the new file (the one to be updated) My.T.y.M2.xls is the old file (from which i want to copy data) how is it possible to copy data recorded in non-adiacent cell in a quick way??? At the moment i've written a macro that works fine but it's not written in the best way, can someone help me please ?? i would like to avoid the macro to jump from one file to the other one changing program lines such as (see macro list below): Windows("My.T.y.M2.xls").Activate copy cell content Windows("My.T.y.M2.xls").Activate paste cell content with a more compact instruction. below you've the macro i use. Sub copiaform_da_MytyM2_a_MytyM() ' ' copiaform_da_MytyM2_a_MytyM Macro ' Macro registrata il 19/10/2005 da fulvio Dim i As Integer For i = 15 To 123 Step 12 Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("B" & i).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("B" & i).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("C" & i + 1 & ":C" & i + 11).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("C" & i + 1 & ":C" & i + 11).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("E" & i + 1 & ":E" & i + 11).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("E" & i + 1 & ":E" & i + 11).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Next i Range("A1").Select Sheets("My T.y.M's infos").Select Range("R197").Select End Sub thanks for your help |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You can tighten this up with worksheet objects. One for the current book and
one for the old book dim wksCopyTo as worksheet dim wksCopyFrom as worksheet set wkscopyto = thisworkbook.sheets("saved line-ups") set wkscopyfrom = workbooks("My.T.y.M2.xls").sheets("saved line-ups") For i = 15 To 123 Step 12 wkscopyfrom.Range("B" & i).copy wkscopyto.Range("B" & i).PasteSpecial Paste:=xlPasteValues '... next i set wkscopyfrom = nothing set wkscopyto = nothing Don't use the selects. There is no need with the worksheet objects. They can actually be very problematic... -- HTH... Jim Thomlinson "furbiuzzu" wrote: Hi all, i've a little problem. i've to copy data from one file to its updated version. let's say: My.T.y.M.xls is the new file (the one to be updated) My.T.y.M2.xls is the old file (from which i want to copy data) how is it possible to copy data recorded in non-adiacent cell in a quick way??? At the moment i've written a macro that works fine but it's not written in the best way, can someone help me please ?? i would like to avoid the macro to jump from one file to the other one changing program lines such as (see macro list below): Windows("My.T.y.M2.xls").Activate copy cell content Windows("My.T.y.M2.xls").Activate paste cell content with a more compact instruction. below you've the macro i use. Sub copiaform_da_MytyM2_a_MytyM() ' ' copiaform_da_MytyM2_a_MytyM Macro ' Macro registrata il 19/10/2005 da fulvio Dim i As Integer For i = 15 To 123 Step 12 Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("B" & i).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("B" & i).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("C" & i + 1 & ":C" & i + 11).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("C" & i + 1 & ":C" & i + 11).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows("My.T.y.M2.xls").Activate Sheets("saved line-ups").Select Range("E" & i + 1 & ":E" & i + 11).Select Application.CutCopyMode = False selection.Copy Windows("My.T.y.M.xls").Activate Sheets("saved line-ups").Select Range("E" & i + 1 & ":E" & i + 11).Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Next i Range("A1").Select Sheets("My T.y.M's infos").Select Range("R197").Select End Sub thanks for your help |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
thanks for your solution, i'll try it, but isn't it possible to write
something really compact as that ?? For i = 15 To 123 Step 12 Windows("MyTyM").worksheets("saved line-ups").Range("B" & i).value = Windows("MyTyM2").worksheets("saved line-ups").Range("B" & i).value next i etc.. etc or instead of "Windows" some other word that indicates source & destination file ?? |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You bet. I was following your original outline. If you are only moving 1 cell
value at a time then... dim wksCopyTo as worksheet dim wksCopyFrom as worksheet set wkscopyto = thisworkbook.sheets("saved line-ups") set wkscopyfrom = workbooks("My.T.y.M2.xls").sheets("saved line-ups") For i = 15 To 123 Step 12 wkscopyto.Range("B" & i).Value = wkscopyfrom.Range("B" & i).Value '... next i set wkscopyfrom = nothing set wkscopyto = nothing -- HTH... Jim Thomlinson "furbiuzzu" wrote: thanks for your solution, i'll try it, but isn't it possible to write something really compact as that ?? For i = 15 To 123 Step 12 Windows("MyTyM").worksheets("saved line-ups").Range("B" & i).value = Windows("MyTyM2").worksheets("saved line-ups").Range("B" & i).value next i etc.. etc or instead of "Windows" some other word that indicates source & destination file ?? |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
i move sets of 10 cells at a time as you can see in
Range("E" & i + 1 & ":E" & i + 11).Select but the command line: Windows("MyTyM").worksheets("saved line-ups").Range("B" & i).value = Windows("MyTyM2").worksheets("saved line-ups").Range("B" & i).value seems to be incorrect.... |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
To move a single value you can use the .Value. To move a range use copy and
pastespecial. Avoid using the selects. They are innefficiant and probematic. dim wksCopyTo as worksheet dim wksCopyFrom as worksheet set wkscopyto = thisworkbook.sheets("saved line-ups") set wkscopyfrom = workbooks("My.T.y.M2.xls").sheets("saved line-ups") For i = 15 To 123 Step 12 wkscopyto.Range("B" & i).Value = wkscopyfrom.Range("B" & i).Value wkscopyfrom.Range("E" & i + 1 & ":E" & i + 11).copy wkscopyto.Range("E" & i).PasteSpecial Paste:=xlPasteValues '... next i set wkscopyfrom = nothing set wkscopyto = nothing -- HTH... Jim Thomlinson "furbiuzzu" wrote: i move sets of 10 cells at a time as you can see in Range("E" & i + 1 & ":E" & i + 11).Select but the command line: Windows("MyTyM").worksheets("saved line-ups").Range("B" & i).value = Windows("MyTyM2").worksheets("saved line-ups").Range("B" & i).value seems to be incorrect.... |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Macro Help Needed - Excel 2007 - Print Macro with Auto Sort | Excel Worksheet Functions | |||
My excel macro recorder no longer shows up when recording macro | Excel Discussion (Misc queries) | |||
translate lotus 1-2-3 macro into excel macro using excel 2000 | Excel Programming | |||
Excel Macro Issue Trying to autorun Macro Upon Opening Worksheet | Excel Programming |