Avatar billede mrkr Juniormester
04. januar 2009 - 21:37 Der er 11 kommentarer og
1 løsning

overføre data fra et ark til et andet ark

Jeg har en fil der hedder stam.
Jeg har en del data i arket INDLÆS.
Disse data skal jeg nu have overført til en anden fil STAMOPLYSNINGER_STAM

Jeg har tidligere fået hjælp til at opdatere data fra ark til ark.
http://www.eksperten.dk/spm/854679

Nu har jeg så forsøgt at kombinere den kode med at overføre data til en anden fil.

Men det går galt i denne linje:

For t = 1 To rk1

Er der nogen der kan fortælle mig hvad der er galt eller evt. komme med et andet bud på hvordan jeg kan klare problemet.
Er det en omskrivning af koden giver jeg gerne ekstra points.





Sub eksporter_data()
Dim RK As Long, Data As Variant
Dim wb As Workbook
Application.ScreenUpdating = False
   
    Set wb = Workbooks.Open("c:\stamoplysninger_stam.xlsm", True, False)
   
        With ThisWorkbook.Sheets("indlæs")
            RK = .Range("a65536").End(xlUp).Row              ' finder nedeste linje
            Data = .Range(.Range("A1"), .Range("J" & RK))    ' området data er fra linje 3 og nedefter
        End With
       
        With wb.Sheets("navneliste")
          Range("A1:J10000").Clear
            RK = .Range("a65536").End(xlUp).Row + 0                                ' finder nederste linje og stiller sig i linjen nedenfor
            .Range(.Range("A" & RK), .Range("J" & RK + UBound(Data, 1) - 1)) = Data  ' indsætter data fra andet ark
        End With
     
Set sh1 = wb.Sheets("navneliste")
Set sh2 = wb.Sheets("data")
rk1 = sh1.Cells(900, 1).End(xlUp).Row
rk2 = sh2.Cells(900, 1).End(xlUp).Row

For t = 1 To rk1
On Error Resume Next
RK = sh2.Range("A1:A" & rk2).Find(sh1.Cells(t, 1).Value, LookIn:=xlValues).Row
sh2.Cells(RK, 2) = sh1.Cells(t, 2).Value
sh2.Cells(RK, 3) = sh1.Cells(t, 3).Value
sh2.Cells(RK, 4) = sh1.Cells(t, 4).Value
sh2.Cells(RK, 5) = sh1.Cells(t, 5).Value
sh2.Cells(RK, 6) = sh1.Cells(t, 6).Value
Next
   
Application.DisplayAlerts = False
wb.Save
wb.Close
Application.DisplayAlerts = True

End Sub
Avatar billede kabbak Professor
05. januar 2009 - 23:21 #1
With wb.Sheets("navneliste")
          Range("A1:J10000").Clear ' hvad tømmer du her, det må være det aktive ark, for du har ikke punktum foran, så det er ikke  Sheets("navneliste")
            RK = .Range("a65536").End(xlUp).Row + 0                                ' finder nederste linje og stiller sig i linjen nedenfor
            .Range(.Range("A" & RK), .Range("J" & RK + UBound(Data, 1) - 1)) = Data  ' indsætter data fra andet ark
        End With
Avatar billede mrkr Juniormester
06. januar 2009 - 22:11 #2
Det kan godt være at jeg har lavet en fodfejl omkring ragen(a1......)
Det må jeg hellere få rettet.
Den første del af koden frem til :
....
end with

Virker vist næsten efter hensigten :-)

Den første del skal overføre de data der står i arket INDLÆS i den åbne workbook over til arket NAVNELISTE i den fil der kaldes WB (c:\stamoplysninger_stam.xlsm)

I den anden del af koden skal den overføre data fra arket NAVNELISTE til arket DATA. Men den skal ikke overføre dataene i et hug.

Dette skyldes at der i NAVNELISTE f.eks. kan stå følgende nr.
1
3
5
6
7
8
22
99

I arket DATA kan der f.eks. stå
1
2
3
4
5
6
7
8
10
15
22
osv.

Der er altså ikke lige mange numre i de to ark.
Dataene skal derfor flyttes linje for linje med tallet i kol A som variabel.

Det den nederste del af koden skal derfor gøre følgende:
tag det første tal i kolonne A i arket NAVNELISTE og kopier kol b+c+d+e+f over i arket DATA i cellerne b+c+d+e+f i den linje som indeholder det samme tal i kol A, som i det første ark.

Min kode stopper i denne linje, men jeg har ingen ide om hvorfor:
For t = 1 To rk1

Hvis jeg laver en "lille" kode og kører den for sig selv, har jeg ingen problemer.
Den lille udgave ser således ud:
sub test()
Set sh1 = Sheets("navneliste")
Set sh2 = Sheets("data")
rk1 = sh1.Cells(900, 1).End(xlUp).Row
rk2 = sh2.Cells(900, 1).End(xlUp).Row

For t = 1 To rk1
On Error Resume Next
RK = sh2.Range("A1:A" & rk2).Find(sh1.Cells(t, 1).Value, LookIn:=xlValues).Row
sh2.Cells(RK, 2) = sh1.Cells(t, 2).Value
sh2.Cells(RK, 3) = sh1.Cells(t, 3).Value
sh2.Cells(RK, 4) = sh1.Cells(t, 4).Value
sh2.Cells(RK, 5) = sh1.Cells(t, 5).Value
sh2.Cells(RK, 6) = sh1.Cells(t, 6).Value
Next
end sub


Hjælp :-)
Avatar billede excelent Ekspert
07. januar 2009 - 15:09 #3
prøv lige at indsætte følgende lige før linien "For t=1 to rk1"

msgbox rk1

det undrer mig at det netop er i den linie det går galt
så det kunne være rart at vide hvilken værdi rk1 får/har
Avatar billede mrkr Juniormester
09. januar 2009 - 23:30 #4
det hjælper ikke at lave denne linje.
Den gør i break mode og skriver at der er fejl i den samme linje

For t = 1 To rk1
Avatar billede excelent Ekspert
11. januar 2009 - 10:17 #5
det var ikke en løsning men et spørgsmål
Avatar billede mrkr Juniormester
11. januar 2009 - 11:22 #6
Hej Excelent

Sådan forstod jeg det også, men jeg kan desværre ikke få den til at vise noget i msgboxen.

Den går i breakmode inden den kan nå at vise noget
Avatar billede excelent Ekspert
11. januar 2009 - 11:32 #7
ok så ved vi at fejlen skal findes i koden før msgbox
ser lige om jeg kan finde fejlen
Avatar billede excelent Ekspert
11. januar 2009 - 11:38 #8
Prøv ret følgende 2 linier
Set sh1 = wb.Sheets("navneliste")
Set sh2 = wb.Sheets("data")
til
Set sh1 = Workbooks("navn").Sheets("navneliste")
Set sh2 = Workbooks("navn").Sheets("data")
ret lige navn til aktuel Projektmappenavn
Avatar billede mrkr Juniormester
11. januar 2009 - 12:41 #9
Det går stadig galt.
Den siger dette:

compile error:
expected variable or funtion

Så har jeg lavet en linje der hedder
dim t as long

Nu går den så galt i denne linje:
Set sh1 = Workbooks("navn").Sheets("navneliste")

den skriver:
subscript out of range

Jeg har rettet filnavnet, så den kan godt finde filen
Avatar billede excelent Ekspert
11. januar 2009 - 13:30 #10
subscript out of range = fejl ved filnavn eller arknavn
Du har vel rettet navn til aktuel projektmappenavn?

Du skal muligvis også rette her :With wb.Sheets("navneliste")
Avatar billede mrkr Juniormester
21. juli 2009 - 00:22 #11
Den her fik jeg af en eller anden frund aldrig lukket.
Beklager excelent.

Har du et svar?
Avatar billede excelent Ekspert
21. juli 2009 - 12:41 #12
ok
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