excel - VBA Copy data from one sheet to another -


i'm pretty new vba , need project. need write macro reads sheet name in column c, , pastes values source workbook range in target workbook, specified in column d.

so example, needs copy data in sheet2 of myworkbook book, , paste range of theirworkbook sheet2. place range , sheet number information stored in separate workbook.

edit: i've added picture of wbopen looks like. this here.

option explicit    sub pastetotargetrange()        dim arrvar variant 'stores sheets copied      dim arrvartarget variant 'stores names of sheets in target workbook      dim rngrange range 'each sheet name in given range      dim rngloop range    'range rngrange based in      dim wssource worksheet 'source worksheet ranges found      dim wbsource workbook    'workbook information paste      dim wbtarget workbook    'workbook receive information      dim strsourcefile string 'location of source workbook      dim strtargetfile string 'location of source workbook      dim wbopen workbook  'current open workbook(one inputs)      dim wsrange range 'get information source workbook      dim varrange range   'range values should pasted      dim integer 'counter for loop      dim wbknewsheet worksheet 'create new worksheet if target workbook doesn't have      dim wstarget worksheet 'target workbook worksheet      dim varnumber string 'range post                        set wbopen = workbooks.open("workbookwithranges.xlsx")            'open source file      msgbox ("open source file")      strsourcefile = application.getopenfilename         if strsourcefile = "" exit sub         set wbsource = workbooks.open(strsourcefile)               'open target file      msgbox ("open target file")      strtargetfile = application.getopenfilename         if strtargetfile = "" exit sub          set wbtarget = workbooks.open(strtargetfile)            'activate transfer workbook      wbopen.activate              set wsrange = activesheet.range("c9:c20")            set arrvartarget = wbtarget.worksheets                      each varrange in wsrange          if varrange.value = 'target workbook worksheets              varnumber = varrange.offset(0, -1).value              set wstarget = x.offset(0, 1)                            wssouce.range(wstarget).value = varnumber          else              wbknewsheet = worksheets.add              wbknewsheet.name = varrange.value        end if      next                  end sub

something (untested should give idea)

sub pastetotargetrange()      '....omitted      set wsrange = wbopen.sheets(1).range("c9:c20")      each c in wsrange          shtname = c.offset(0, -1).value         set wstarget = getsheet(wbtarget, shtname) 'get target sheet          wbsource.sheets(shtname).range(c.value).copy wstarget.range(c.value)      next  end sub  'get reference named sheet in specific workbook '  default create sheet if not found  function getsheet(wb workbook, ws string, optional createifmissing boolean = true)     dim rv worksheet     on error resume next 'ignore eroror if no match     set rv = wb.worksheets(ws)     on error goto 0 'stop ignoring errors     'sheet wasn't found, , should create if missing     if rv nothing , createifmissing         set rv = wb.worksheets.add(after:=wb.worksheets(wb.worksheets.count))         rv.name = ws     end if     set getsheet = rv end function 

Comments