Avatar billede simon_thrown Nybegynder
26. december 2010 - 15:17 Der er 11 kommentarer

Importere fra Excel til Acces database

Jeg skal importere data fra ca. 200 excel-dokumenter, alle med en overskrift, som fylder 2 linjer. Acess kan indstilles til, at den øverste linje er en overskrift, men ikke de 2 øverste. Dermed tager den konsekvent den andenøverste linje med som data, hvilket resulterer i helt ubrugelig data. Nogen forslag til en løsning?
Avatar billede supertekst Ekspert
26. december 2010 - 15:34 #1
VBA kunne måske være en hjælp. De 200 excel-dokumenter - er det 200 projektmapper - ark eller??

Ligger de i samme mappe, hvis separate filer?
Avatar billede simon_thrown Nybegynder
26. december 2010 - 16:28 #2
tak for reaktionen, Supertekst. Det er ca. 200 individuelle Excel-filer (=første side i hver projektmappe). De ligger i den samme mappe på computeren. VBA har jeg desværre slet ingen erfaring med. Jeg forestillede mig at bruge Access impot-funktion, bare med den ændring, at den ikke skal opfatte den næstøverste linje som data. Det er meningen, at alle dataene skal importeres ind i den samme tabel, så det er muligt at sammenligne oplysningerne.
Avatar billede supertekst Ekspert
26. december 2010 - 17:51 #3
En løsning kunne være at samle alle filer i een - idet overskrifterne (2 første ræker) springes over.
Avatar billede simon_thrown Nybegynder
26. december 2010 - 22:02 #4
Undskyld, hvis jeg ikke har kommunikeret helt klart; men det drejer sig om at lave en samlet tabel for filerne, som kan opdateres, når filerne ændres, så de skal fastholdes i deres nuværende form. Iøvrigt har jeg desværre erfaret, at der maksimalt kan være ca. 60 filer, som kan importeres til et Excel-dokument, så det vil ikke kunne lade sig gøre at sammenkæde dem over i et sådant:-(
Avatar billede supertekst Ekspert
27. december 2010 - 00:18 #5
Kunne en tekstfil (kommasepareret) så være en mulighed?
Avatar billede supertekst Ekspert
27. december 2010 - 11:05 #6
Nedenstående kode anbrines i et separat regneark. Koden arbejder på følgende måde:

Alle filer i en mappe gennemløbes automatisk. Data på første ark i hver fil skrives i en tekstfil fra række 2 - felter adskilles af ";" (kan ændres).

Tekstfilen kan herefter importeres i Access.

Const mappenavn = "filMappe"                        '<---- mappenavn, hvor filerne er samlet - justeres
Dim xlsFil As Object
Const tekstFilNavn = "samleFil.txt"                '<---- tekstfil, der samler xls-data - evt. justeres
Public Sub samlingAfFiler()
   
    Open ActiveWorkbook.Path & "\" & tekstFilNavn For Output As #1
   
    traverserFilMappen ActiveWorkbook.Path & "\" & mappenavn
   
    MsgBox ("Samling af filer afsluttet")

End Sub
Private Sub traverserFilMappen(mappeSti)
Dim fs, f, f1, fc, fNavn As String
Dim ræk As Long, kol As Long, linje As Variant

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(mappeSti)
    Set fc = f.Files
   
    For Each f1 In fc
        Set xlsFil = CreateObject("Excel.Application")
        With xlsFil
            .Workbooks.Open mappeSti & "\" & f1.Name
            .Sheets(1).Activate
            antalRækker = xlsFil.ActiveCell.SpecialCells(xlLastCell).Row
            antalkolonner = xlsFil.ActiveCell.SpecialCells(xlLastCell).Column
           
            For ræk = 3 To antalRækker
                linje = ""
                For kol = 1 To antalkolonner
                    linje = linje & .Cells(ræk, kol)
                    If kol < antalkolonner Then
                        linje = linje & ";"
                    End If
                Next kol
                Print #1, linje
            Next ræk
            .Quit
        End With
       
        Set xlsFil = Nothing
    Next
   
    Close #1

End Sub
Avatar billede simon_thrown Nybegynder
27. december 2010 - 13:27 #7
endnu engang tak for svar; det ser avanceret ud, jeg håber jeg kan finde ud af det (hvordan er det, skal det altsammen blot ind i den samme linie i et regneark, og så kører det selv?).
Avatar billede supertekst Ekspert
27. december 2010 - 14:20 #8
Koden kan indsættes i en fane (Højreklik / Vis programkode / indsæt)

Koden aktiveres ved Alt+F8 / samlingAfFiler / Afspil makro

- ellers sender du en mail - så returnerer jeg min model.

@-adresse under profil.

Hvilke version af Office anvender du?
Avatar billede simon_thrown Nybegynder
28. december 2010 - 18:26 #9
endnu engang tak for svar. Nu sidder jeg og leger med det, jeg bruger Officepakken 2007. Da jeg indsatte koden kom den med en fejl i forbindelse med "mappesti", så det ændrede jeg, lidt friskt, til "mappenavn", som jeg kunne se var navnet andetsteds i din makro. Men nu er den gået ind i en længere tænkepause, hvor den spørger om jeg vil gemme de ændringer, som jeg åbenbart er igang med at lave ved filerne. (Det er dog kun en kopi af filerne). Men den forekommer mig at være gået helt død!. (Hvad jeg skal bruge det til er følgende: Min fader har en ca. 200 helt ens opsatte Excel-filer, hvor han fører regnskab over sine økologiske grise. Nu handler det om, at han skal kunne koble sin Smartphone til computeren, og så skulle det være muligt at hive alle disse oplysninger ind i en database.) Uanset hvad så har du fortjent nogle point, men du skal vist afgive et svar, for at jeg kan give dig point?
Avatar billede supertekst Ekspert
28. december 2010 - 18:49 #10
Tror du ikke du kunne have gavn af at se min model?
Avatar billede simon_thrown Nybegynder
28. december 2010 - 19:45 #11
Jo, det har du vist ret i, jeg har sendt dig en mail:-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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