Opsplitning af store tekstfiler med VBA makro

Jeg har lavet endnu en Excel VBA-side for makro-nørderne, denne gang om hvordan man kan opsplitte en tekst- eller csv-fil i flere mindre filer.

Jeg bruger Excel-makroer til at analysere logfilerne for hjemmesiden. Så kan jeg fx se, hvem der linker direkte (hotlinker) til mine billeder, hvem der prøver at bryde ind på bloggen og meget andet.

Jeg plejede at downloade ”stikprøver,” nemlig dagens log her og nu, men det kan jeg ikke mere. Derimod kan jeg downloade logfiler, som dækker en kalendermåned.

Disse logfiler er imidlertid meget store og har flere linjer end der er rækker i Excel 2003, som jeg stadig bruger hjemme (hvorfor betale for en ny?).

Excel 2003 har ”kun” plads til 65.536 rækker, og hvad gør man så, når januar måneds logfil har 285.173 linjer? Hvis man importerer filen, læser Excel kun de første 65.536 linjer og ignorerer resten.

Det oplagte er at dele filen op i mindre filer med fx max 65.500 linjer, men hvordan gør man så lige det?

Jeg søgte på nettet og fandt nogle forslag, men jeg kunne ikke få dem til at virke. Måske var jeg ikke grundig nok, måske var jeg for utålmodig, men jeg droppede forslagene og skrev min egen makro, og den virker.

Ganske vist skal jeg nu importere og analysere fx 5 filer i stedet for 1, men det har også sine fordele, for den originale fil for januar fylder mere end 72 MB i ikke komprimeret format.

Det tager ca. 8 sekunder at opsplitte januar måneds 285.173 linjer i 5 mindre filer, og det kan jeg godt leve med.

Hvem der så har brug for den slags, udover nørder som mig, er noget ganske andet, og det er næppe siden, ”Opsplitning af tekstfiler til mindre filer med Excel VBA,” som får besøgstallet til at eksplodere.

Men skidt med det. Internettet har så mange nicher, og det er sjovt at bidrage med noget, som andre kan bruge, selvom ”andre” blot er nogle få.

8 tanker om "Opsplitning af store tekstfiler med VBA makro"

  1. Stegemüller

    Super med en anden “nørd”. Som Bill Gates er citeret for at sige, så skal man behandle nørder godt, for man ender med at arbejde for en. 🙂

    Svar
    1. Eric

      Hehe 😉 Jeg påtager mig lejlighedsvis konsulentopgaver, men nogen blomstrende virksomhed bliver det aldrig.

      Svar
  2. Anne Folehave

    Nå da, så fik jeg dagens lektion i fremmed sprog. Tak. Ikke at jeg blev klogere, men det er der helt sikkert andre der gør. Jeg kan ikke en gang lave, en dias fremvisning fra Blogspot. God weekend.

    Svar
    1. Eric

      Hehe! Jeg oplever den fremmede planet, hvis jeg havner på en “kreablog,” en modeblog, en babyblog eller en imod-alle-fremmede-blog. Så giver jeg rumskibet fuld gas væk i cyberspace, for planetens atmosfære er metan eller en anden gasart, som desværre giver mig allergi.

      På denne blog dukker nørderiet kun op en gang imellem, det lover jeg. 😉

      Svar
  3. Jørgen

    Jeg nøjes med at glæde mig over at login security solutions har hindret et par brute force angreb de sidste par dage …

    Svar
  4. Donald

    Cygwin, split(1) er svaret.
    SPLIT(1) User Commands SPLIT(1)

    NAME
    split – split a file into pieces

    SYNOPSIS
    split [OPTION]… [INPUT [PREFIX]]

    DESCRIPTION
    Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, …; default
    size is 1000 lines, and default PREFIX is `x’. With no INPUT, or when
    INPUT is -, read standard input.

    Svar

Skriv et svar til Donald Annuller svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *