Avatar billede nehm Nybegynder
16. april 2007 - 12:59 Der er 12 kommentarer og
1 løsning

Import af data fra fil til Excel

Hej

Jeg har et excel ark hvor jeg har en medarbejder liste og der kommer en ny hver måned.

Det jeg gerne vil lave er at importere 4 kolloner fra en fil.

Kollone 1 til A
Kollone 2 til C
Kollone 3 til B
Kollone 4 til D

Men jeg vil gerne kunne gennemse computeren for at vælge filen da den ikke ligger samme sted hver gang.
Fil format er også excel med celle formatet er ikke det samme.

Kan man lave dette ?
Avatar billede supertekst Ekspert
16. april 2007 - 15:41 #1
Er det alle rækker fra "en fil"?
Skal disse så sættes i forlængelse af de bestående i "medarbejderlisten"?
Avatar billede nehm Nybegynder
17. april 2007 - 10:15 #2
Nej det er kun 4 kolloner der skal importeres
Og de skal overskrive dem der ligger der.
Avatar billede supertekst Ekspert
24. april 2007 - 09:58 #3
Rem Koden Indsættes i ARK i Master (VBA / Alt+F11)
Rem ==============================================
Rem Der skrives fra række 2 i "Master"
Const StartRæk = 2                                  'kan tilpasses
Rem Der læses fra række 1 i OpdateringsFilen"
Const opdRæk = 1                                    'kan tilpasses

Dim FilNavn
Sub OpdaterMedarbejdere()
Rem Slet gl.rækker i master
    mantalræk = ActiveCell.SpecialCells(xlLastCell).Row
    Range("A" + CStr(StartRæk) + ":D" + CStr(mantalræk)).Select
    Selection.ClearContents
   
Rem Vælg opdateringsfil
    FilNavn = Application.GetOpenFilename
    hentFraFil FilNavn, StartRæk
   
Rem Marker opdaterede Master
    Cells(StartRæk, 1).Select
End Sub
Private Sub hentFraFil(FilNavn, mRæk)
Dim xls, antalRæk
    Set xls = CreateObject("Excel.application")
    With xls
        .Workbooks.Open FilNavn
        antalRæk = .ActiveCell.SpecialCells(xlLastCell).Row
        For Ræk = opdRæk To antalRæk
            For kol = 1 To 4
                Cells(mRæk, kol) = .Cells(Ræk, kol)
            Next kol
            mRæk = mRæk + 1
        Next Ræk
        .Application.Quit
    End With
   
    Set xls = Nothing
End Sub
Avatar billede nehm Nybegynder
26. april 2007 - 12:41 #4
det virker næsten som det skal, men i den data der kommer fra opdateringsfilen skal kollone 1 og 2 byttes når de importeres.

master  a b c d
Opdater. b a c d
Avatar billede supertekst Ekspert
26. april 2007 - 13:16 #5
OK - det havde jeg ikke bemærket - prøver igen...
Avatar billede supertekst Ekspert
26. april 2007 - 13:27 #6
Version 2:

Rem Koden Indsættes i ARK i Master (VBA / Alt+F11)
Rem ==============================================
Rem Der skrives fra række 2 i "Master"
Const StartRæk = 2                                  'kan tilpasses
Rem Der læses fra række 1 i OpdateringsFilen"
Const opdRæk = 1                                    'kan tilpasses

Dim FilNavn
Sub OpdaterMedarbejdere()
Rem Slet gl.rækker i master
    mantalræk = ActiveCell.SpecialCells(xlLastCell).Row
    Range("A" + CStr(StartRæk) + ":D" + CStr(mantalræk)).Select
    Selection.ClearContents
   
Rem Vælg opdateringsfil
    FilNavn = Application.GetOpenFilename
    hentFraFil FilNavn, StartRæk
   
Rem Marker opdaterede Master
    Cells(StartRæk, 1).Select
End Sub
Private Sub hentFraFil(FilNavn, mRæk)
Dim xls, antalRæk
    Set xls = CreateObject("Excel.application")
    With xls
        .Workbooks.Open FilNavn
        antalRæk = .ActiveCell.SpecialCells(xlLastCell).Row
        For Ræk = opdRæk To antalRæk            'Mater <- Opdat
            Cells(mRæk, 1) = .Cells(Ræk, 2)    'A <- 2
            Cells(mRæk, 2) = .Cells(Ræk, 1)    'B <- 1
            Cells(mRæk, 3) = .Cells(Ræk, 3)    'C <- 3
            Cells(mRæk, 4) = .Cells(Ræk, 4)    'D <- 4
            mRæk = mRæk + 1
        Next Ræk
        .Application.Quit
    End With
   
    Set xls = Nothing
End Sub
Avatar billede nehm Nybegynder
26. april 2007 - 13:49 #7
Det er bare super :-) mange tak... lig et svar!
Avatar billede supertekst Ekspert
26. april 2007 - 14:56 #8
Det får du her og selv tak...
Avatar billede nehm Nybegynder
01. maj 2007 - 08:58 #9
Lige et spørgsmål til: kan man få converteret kollone 1 og 2 til nummere, samtige med at man importere dem ?

Hvis jeg efterfølgene vil importere fra en fil med nu skal det ikke overskrive med bare ligge det efter.
Avatar billede supertekst Ekspert
02. maj 2007 - 09:53 #10
Denne version giver mulighed for at tilføje/overskrive. Med hensyn til konvertering til tal i kolonne 1 & 2 - er det ikke nemmest, at formatere de to kolonne til talformat i Masteren?

Rem Koden Indsættes i ARK i Master (VBA / Alt+F11)
Rem ==============================================
Dim StartRæk
Rem Der læses fra række 1 i OpdateringsFilen"
Const opdRæk = 1                                    'kan tilpasses
Dim antalRæk, sv
Dim FilNavn
Sub OpdaterMedarbejdere()
Rem Tilføjes eller overskrives
    sv = MsgBox("Tilføj=Ja, Overskriv=Nej", vbYesNo)

Rem Hvis svar = Ja - så tilføj
    If sv = 6 Then
Rem Første ledige række i master-filen
        StartRæk = findTomRække
    Else
Rem Slet gl.rækker i master
        StartRæk = 2

        mantalræk = ActiveCell.SpecialCells(xlLastCell).Row
        Range("A" + CStr(StartRæk) + ":D" + CStr(mantalræk)).Select
        Selection.ClearContents
    End If
   
Rem Vælg opdateringsfil
    FilNavn = Application.GetOpenFilename
    hentFraFil FilNavn, StartRæk
   
Rem Marker opdaterede Master
    Cells(StartRæk, 1).Select
End Sub
Private Function findTomRække()
    For f = 2 To ActiveCell.SpecialCells(xlLastCell).Row
        If Cells(f, 1) = "" Then
            findTomRække = f
            Exit Function
        End If
    Next f
End Function
Private Sub hentFraFil(FilNavn, mRæk)
Dim xls, antalRæk
    Set xls = CreateObject("Excel.application")
    With xls
        .Workbooks.Open FilNavn
        antalRæk = .ActiveCell.SpecialCells(xlLastCell).Row
        For Ræk = opdRæk To antalRæk
            Cells(mRæk, 1) = .Cells(Ræk, 1)    'A <- 1
            Cells(mRæk, 3) = .Cells(Ræk, 2)    'C <- 2
            Cells(mRæk, 2) = .Cells(Ræk, 3)    'B <- 3
            Cells(mRæk, 4) = .Cells(Ræk, 4)    'D <- 4
            mRæk = mRæk + 1
        Next Ræk
        .Application.Quit
    End With
   
    Set xls = Nothing
End Sub
Avatar billede nehm Nybegynder
02. maj 2007 - 11:00 #11
Det viker bare helt perfekt.
Du må lige sige hvis du vil have nogle point for det sidste.

jeg har formateret de to kolloner til tal, men når jeg importere kommer der er error på cellerne og jeg skal vælge convert to numbers for at det væk, så tænkte jeg man måske kunne gøre det via VB.
Avatar billede supertekst Ekspert
02. maj 2007 - 18:37 #12
Hvad står der f.eks. i de to kolonner i den fil, der "importeres"?
Avatar billede nehm Nybegynder
03. maj 2007 - 08:26 #13
kollone 1          2
    2723331    10055649
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
Kurser inden for grundlæggende programmering

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