16. april 2007 - 12:59Der 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.
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
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
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
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.
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.