Avatar billede igoogle Forsker
14. december 2011 - 15:37 Der er 2 kommentarer og
1 løsning

data crawler

Hej,

jeg søger en kopi macro der kravler igennem et sheet udfra en sti hvor det sheet der skal kravles igennem er sheet nr 2.

I dette sheet skal den så tage og kopier hver cell i tablen over i det orginale sheet på sheet data, 1 til 1 i første omgang.

sådan at b2 i ark 2 bliver kopier til b2 i ark 1.

Det skal være sådan at den skal selv kunne tælle hvor mange columns og rows der er i arket, så kopi range virker ikke.

på forhånd tak
Avatar billede tdh1309 Juniormester
15. december 2011 - 08:39 #1
Hej

Nedenstående skulle klare din opgave:

Option Explicit
' Purpose:  Loop row, column on sheet 2 and copy data to sheet 1
' Parameter: None
Sub CopySheet2toSheet1()
  Dim sourceSheet As Worksheet        ' Sheet to copy data from
  Dim destinationSheet As Worksheet  ' Sheet to insert data to
  Dim maxColumn As Long                ' Number of columns in sheet
  Dim maxRow As Long                  ' Number of rows in sheet
  Dim rowCount As Long                  ' Var to loop trough rows
  Dim colCount As Long                  ' Var to loop trough columns
 
 
  ' Initialization
  Set sourceSheet = ThisWorkbook.Worksheets(2)      ' If reference by name: worksheets("Sheet2")
  Set destinationSheet = ThisWorkbook.Worksheets(1) ' If reference by name: worksheets("Sheet1")
  Call applicationInit                              ' Turns off screenupdating and calculation
  maxRow = LastRow(sourceSheet)
  maxColumn = LastColumn(sourceSheet)
  destinationSheet.Cells.Clear                          ' Clears destination sheet
 
  ' Logic
  For rowCount = 1 To maxRow Step 1
    For colCount = 1 To maxColumn Step 1
      destinationSheet.Cells(rowCount, colCount) = "Copied: " & sourceSheet.Cells(rowCount, colCount)
    Next
  Next
 
  ' Termination
  MsgBox (sourceSheet.Name & " copied to " & _
          destinationSheet.Name & ": " & _
          "(rows, columns) = (" & maxRow & ", " & maxColumn & ")")
  Call applicationEnd                              ' Turns on screenupdating and calculation
End Sub
' Purpose:  Turns of stuff to increase performance
' Parameter: None
Sub applicationInit()
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False                ' Update off -> speeds up processing
End Sub
' Purpose:  Turns on stuff when work completed
' Parameter: None
Sub applicationEnd()
    Application.ScreenUpdating = True                                      ' Update on
    Application.Calculation = xlCalculationAutomatic                        ' Calculation on
End Sub
' Purpose:  Return number of rows on worksheet
' Parameter: curSH - Sheet to work on
Public Function LastRow(curSH As Worksheet) As Long
    LastRow = curSH.UsedRange.Rows.Count
End Function
' Purpose:  Return number of columns on worksheet
' Parameter: curSH - Sheet to work on
Public Function LastColumn(curSH As Worksheet) As Long
    LastColumn = curSH.UsedRange.Columns.Count
End Function
Avatar billede igoogle Forsker
18. december 2011 - 12:01 #2
Det var lige det der skulle til for at jeg kom i hus..

du smider bare et svar..
Avatar billede tdh1309 Juniormester
18. december 2011 - 13:31 #3
OK!

God at det kan bruges :-)


Jeg er lidt i tvivl om du vil tilgå cellevis, eller rækkevis - men mit første forslag gik på celle efter celle!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester