Avatar billede soeren_soelv Novice
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
Avatar billede word-hajen Nybegynder
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?
Avatar billede kabbak Professor
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
Avatar billede kabbak Professor
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
Avatar billede soeren_soelv Novice
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?
Avatar billede soeren_soelv Novice
17. april 2008 - 09:30 #5
Har fået koden sat op, men den overskriver istedet for at oprette en ny række.
Avatar billede kabbak Professor
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
Avatar billede kabbak Professor
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
Avatar billede soeren_soelv Novice
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?
Avatar billede kabbak Professor
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.
Avatar billede soeren_soelv Novice
17. april 2008 - 10:30 #10
Nej, den havde jeg ikke med. Nu får jeg en compile error på linien "Option Base 1".
Avatar billede kabbak Professor
17. april 2008 - 10:36 #11
Det skal være i toppen af modulet, helt uden for koden
Avatar billede soeren_soelv Novice
17. april 2008 - 10:40 #12
Super - nu virker det!! Send et svar.
Avatar billede kabbak Professor
17. april 2008 - 10:41 #13
et svar ;-))
Avatar billede soeren_soelv Novice
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.
Avatar billede kabbak Professor
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"
Avatar billede soeren_soelv Novice
17. april 2008 - 12:42 #16
Endnu engang tak!!
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

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