17. april 2008 - 08:21
Der er
15 kommentarer og 1 løsning
Gemme data i to forskellige excelfiler/Sende data til excelfil
Hvordan laver jeg denne kode om så data også gemmes i en anden excelfil f.eks. excel-filen C:\test.xls? Det skal stadigvæk være under arket "Data". ActiveWorkbook.Sheets("Data").Activate Range("A1").Select Do If IsEmpty(ActiveCell) = False Then ActiveCell.Offset(1, 0).Select End If Loop Until IsEmpty(ActiveCell) = True ActiveCell.Value = txtDato.Value ActiveCell.Offset(0, 1) = cboKlok.Value ActiveCell.Offset(0, 2) = cboMaskine.Value ActiveCell.Offset(0, 3) = txtVarenummer.Value ActiveCell.Offset(0, 4) = txtPlade.Value ActiveCell.Offset(0, 5) = txtPladeordre.Value ActiveCell.Offset(0, 6) = txtOrdrenummer.Value ActiveCell.Offset(0, 7) = txtArbejdsnr.Value ActiveCell.Offset(0, 8) = txtArbejdsnr2.Value ActiveCell.Offset(0, 9) = txtEmner.Value ActiveCell.Offset(0, 10) = txtKasserede.Value ActiveCell.Offset(0, 11) = cboFejltype.Value ActiveCell.Offset(0, 12) = txtBemaerkning.Value ActiveCell.Offset(0, 13) = "Mekanik" ActiveCell.Offset(0, 14) = "PC XX" Range("A1").Select
Annonceindlæg fra HP
17. april 2008 - 08:55
#1
Skal du bruge koden i 2 forskellige filer eller skal du "blot" have kopieret arket Data fra fil 1 til C:\test.xls?
17. april 2008 - 08:55
#2
Option Base 1 Const kildeSti = "C:\test.xls" 'tilpasses Public Sub tt() Dim Data(15) As Variant Data(1) = txtDato.Value Data(2) = cboKlok.Value Data(3) = cboMaskine.Value Data(4) = txtVarenummer.Value Data(5) = txtPlade.Value Data(6) = txtPladeordre.Value Data(7) = txtOrdrenummer.Value Data(8) = txtArbejdsnr.Value Data(9) = txtArbejdsnr2.Value Data(10) = txtEmner.Value Data(11) = txtKasserede.Value Data(12) = cboFejltype.Value Data(13) = txtBemaerkning.Value Data(14) = "Mekanik" Data(15) = "PC XX" Set kXLS = CreateObject("Excel.application") With kXLS .Workbooks.Open kildeSti ' skriver .Sheets("Data").Range(.Sheets("Data").Range("A65536").End(xlUp).Offset(1, 0), .Sheets("Data").Range("A65536").End(xlUp).Offset(1, 14)) = Data .ActiveWorkbook.Close SaveChanges:=True ' gemmer og lukker .Application.Quit End With Set kXLS = Nothing End Sub
17. april 2008 - 09:15
#3
Ok hvis den skal skrive begge steder, så Option Base 1 Const kildeSti = "C:\test.xls" 'tilpasses Public Sub Gem() Dim Data(15) As Variant Data(1) = txtDato.Value Data(2) = cboKlok.Value Data(3) = cboMaskine.Value Data(4) = txtVarenummer.Value Data(5) = txtPlade.Value Data(6) = txtPladeordre.Value Data(7) = txtOrdrenummer.Value Data(8) = txtArbejdsnr.Value Data(9) = txtArbejdsnr2.Value Data(10) = txtEmner.Value Data(11) = txtKasserede.Value Data(12) = cboFejltype.Value Data(13) = txtBemaerkning.Value Data(14) = "Mekanik" Data(15) = "PC XX" ' skriver lokal Sheets("Data").Range(Sheets("Data").Range("A65536").End(xlUp).Offset(1, 0), Sheets("Data").Range("A65536").End(xlUp).Offset(1, 14)) = Data Set kXLS = CreateObject("Excel.application") With kXLS .Workbooks.Open kildeSti ' skriver ekstern .Sheets("Data").Range(.Sheets("Data").Range("A65536").End(xlUp).Offset(1, 0), .Sheets("Data").Range("A65536").End(xlUp).Offset(1, 14)) = Data .ActiveWorkbook.Close SaveChanges:=True ' gemmer og lukker .Application.Quit End With Set kXLS = Nothing End Sub
17. april 2008 - 09:22
#4
Hej Kabbak Erstatter den kode du har lavet, den jeg havde i forvejen - altså gemmer den både i den fil der er åben og den man definerer stien til? Søger den også efter den første ledige række i arket "Data"? Hvordan benytter jeg koden?
17. april 2008 - 09:30
#5
Har fået koden sat op, men den overskriver istedet for at oprette en ny række.
17. april 2008 - 10:13
#6
Den virker fint her, og overskriver ikke, men sætter det på nederste tomme linje. Koden kræver at der altid er data i A kolonnen, i begge Data ark, der er "txtDato.Value", som ikke må være tom
17. april 2008 - 10:15
#7
"men sætter det på nederste tomme linje" skulle være men sætter det på den tomme linje, lige under eksisterende data
17. april 2008 - 10:22
#8
Åh, det er fordi den starter med at indsætte data, i form af dato, i kolonne B. Har det noget med Offsettet at gøre?
17. april 2008 - 10:25
#9
har du dette med øverst Option Base 1 Const kildeSti = "C:\test.xls" 'tilpasses det skal være der Option Base 1, betyder at data(x) skal starte med 1 og ikke 0, som den gør når der ikke står noget.
17. april 2008 - 10:30
#10
Nej, den havde jeg ikke med. Nu får jeg en compile error på linien "Option Base 1".
17. april 2008 - 10:36
#11
Det skal være i toppen af modulet, helt uden for koden
17. april 2008 - 10:40
#12
Super - nu virker det!! Send et svar.
17. april 2008 - 10:41
#13
et svar ;-))
17. april 2008 - 10:54
#14
Er det muligt at låse det art hvor data bliver lagret - altså så brugeren kan se data, men ikke ændre dem. Det er kun det dataark som formen ligger i der ønskes låst ikke det der sendes til.
17. april 2008 - 11:59
#15
Du kan beskytte arket via kode ' skriver lokal Sheets("Data").Unprotect Password:="Test" Sheets("Data").Range(Sheets("Data").Range("A65536").End(xlUp).Offset(1, 0), Sheets("Data").Range("A65536").End(xlUp).Offset(1, 14)) = Data Sheets("Data").Protect Password:="Test"
17. april 2008 - 12:42
#16
Endnu engang tak!!
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.