Avatar billede NanoQ Nybegynder
21. december 2006 - 11:09 Der er 15 kommentarer og
1 løsning

Script til import af data fra csv

Jeg er blevet stillet en herlig lille Excel opgave.

Jeg har et Excel spørgeskema, der skal udfyldes med en hulens masse oplysninger. Disse oplysninger ligger en kommasepareret CSV fil, i formatet "oplysning1","oplysning2","oplysning3", osv...

Fra excel arket, skal jeg have mulighed for at indtaste filnavnet på csv filen, hvorefter import af data til arket skal ske.

Eksempelvis:

oplysning1 -> B2
oplysning2 -> B3
oplysning3 -> F6
osv...

Hvordan gør jeg dette?
Avatar billede bak Forsker
21. december 2006 - 12:12 #1
Er der kun een linie i CSV-filen  ?
Avatar billede bak Forsker
21. december 2006 - 12:28 #2
og er der altid samme antal oplysninger ?
Avatar billede NanoQ Nybegynder
21. december 2006 - 12:31 #3
Jeps... csv filen består af én lang streng.

Og der er altid samme antal oplysninger. Nogle kan dog være tomme. Så ser strengen sådan ud: "oplysning1","","oplysning3" osv...
Avatar billede bak Forsker
21. december 2006 - 14:01 #4
denne kode skal indsættes i arkets eget kodemodul (højreklik på arkfanen og vælg Vis Programkode og indsæt koden.

Den virker automatisk ved ændring af Celle A1, hvor jeg formader du skriver et nyt filnavn.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("a1")) Is Nothing Then
    FSOReadFile (Target.Text)
End If

End Sub
Sub FSOReadFile(filnavn)
    Dim fs, a
    Dim MyVar
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.OpenTextFile(filnavn, 1, False)
    MyVar = Split(a.ReadAll, ",")
    Range("B2") = MyVar(0)
    Range("B3") = MyVar(1)
    Range("F6") = MyVar(2)
    Range("F7") = MyVar(3)
    'ect.....
   
    a.Close
End Sub
Avatar billede NanoQ Nybegynder
21. december 2006 - 14:14 #5
Umiddelbart ser det fornuftigt ud.

Kan det laves, så scriptet aktiveres af en knap, der først popper en imputbox op, hvori filnavn intastes?
Avatar billede NanoQ Nybegynder
21. december 2006 - 14:15 #6
og det var selvfølgelig "inputbox" ;)

...importen initieres herefter ved klik på OK. :)
Avatar billede bak Forsker
21. december 2006 - 14:59 #7
Jo.. slet Private Sub Worksheet_Change(ByVal Target As Range)

Derefter laver du en knap på arket vha. Kontrolelementer (ikke Forms)
Avatar billede bak Forsker
21. december 2006 - 15:01 #8
indsæt så dette istedet

Private Sub CommandButton1_Click()
Dim Fil As String
'Fil = Application.InputBox("Indtast filnavn", "Fil Import", , , , , , 2)
'If Not Fil = "" Then FSOReadFile (Fil)

Fil = Application.GetOpenFilename()
If Not Fil = "False" Then FSOReadFile (Fil)
End Sub


Du kan nu vælge mellem at bruge Application.GetOpenFilename eller Inputbox.
Den første er mest fejlsikker :-)
Avatar billede bak Forsker
21. december 2006 - 15:17 #9
Du får lige hele koden og lavet så den ser efter csv-filer

Private Sub CommandButton1_Click()
    Dim Fil As String
    Fil = Application.GetOpenFilename(("CSV-Filer (*.csv), *.csv"))
    If Not Fil = "False" Then FSOReadFile (Fil)
End Sub


Sub FSOReadFile(filnavn)
    Dim fs, a
    Dim MyVar
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.OpenTextFile(filnavn, 1, False)
    MyVar = Split(a.ReadAll, ",")
    Range("B2") = MyVar(0)
    Range("B3") = MyVar(1)
    Range("F6") = MyVar(2)
    Range("F7") = MyVar(3)
    'ect.....
    a.Close
End Sub
Avatar billede NanoQ Nybegynder
22. december 2006 - 08:41 #10
Jeg kan sagtens se ideen med scriptet. Og det ser rigtig fornuftigt ud. Jeg kan bare ikke få det til at fungere i praksis. Men nu er jeg heller ikke vanvittigt hård til Excel.

Kan jeg lokke dig til at proppe det i et ark, og sende det til mig? :)

mikael.pedersen <snaldre-a> email.dk
Avatar billede bak Forsker
22. december 2006 - 10:49 #11
Sendt
Avatar billede NanoQ Nybegynder
22. december 2006 - 11:02 #12
Helt perfekt.

Tak for det, og go' jul. :)
Avatar billede NanoQ Nybegynder
22. december 2006 - 11:03 #13
smider du lige et svar.
Avatar billede bak Forsker
22. december 2006 - 11:43 #14
OK og i lige måde  :-)
Avatar billede JenZen Novice
06. august 2008 - 19:35 #15
Kunne jeg evt. få sendt det regneark ?
Avatar billede JenZen Novice
06. august 2008 - 19:36 #16
Og kunne jeg måske få dig til at kigge på mit ? http://www.eksperten.dk/spm/840689
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