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?
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.
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:-(
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
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
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?).
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?
Jo, det har du vist ret i, jeg har sendt dig en mail:-)
Synes godt om
Ny brugerNybegynder
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.