• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Grote hoeveelheden data importeren via macro

Status
Niet open voor verdere reacties.

jannemanvermeul

Gebruiker
Lid geworden
30 sep 2010
Berichten
51
Via een macro haal ik grote bestanden binnen (TXT en CSV).

De macro opent de bestanden en zet de data met copy op het klembord.
De macro sluit vervolgens dat bestand, waarna nu steeds de vraag komt :
"grote hoevelheid informatie op het klembord - Ja = opslaan op klembord - nee = verwijderen uit geheugen"

Kan het antwoord op die vraag via VBA default op JA worden gezet, zodat de user die de macro activeert niet steeds manueel op JA moet klikken
 
Beste,

Zet dit eens in je code nadat je gekopieerd hebt:
Code:
Application.CutCopyMode = False
Richard
 
Jan,

Je kunt beter werken met QueryTables.Add

Hiermee kun je op een eenvoudige en snelle manier grote hoeveelheden data naar binnen halen.

Zie voorbeeld hieronder:
Code:
Sub ImportTXT()
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\TEMP\Bestand.txt", Destination:=[A1])
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
Superzeeuw

Dat werkt inderdaad vlotter; echter.
Ik heb data die uit een 3-tal applicaties komt en niet allemaal dezelfde veld en/of record separator hebben.
Is daar met deze code een draai aan te geven ?
 
Jan,

Kun je van elk te importeren bestand een voorbeeld regel posten.
 
Superzeeuw

Zie hierbij 5 importfiles (afgekorte versie) en de macros voor import.
In principe is de bko.txt een csv file maar de extentie wijzig ik manueel omdat met de macro die anders in 1 kolom wordt geimporteerd.

Bedankt alvast en prettig weekendBekijk bijlage IMPORT.zip
 
Jan,

Bijgevoegd tref je een programma aan met de bestanden die ik van jou heb gekregen.
Het is nu gemaakt als volgt:
Plaats alle bestanden in 1 map.
Open het excel progje en klik op de gele knop.
Als de tabbladen niet bestaan worden ze aangemaakt.
Je ziet nu 5 tabbladen verschijnen met hun eigen data verdeeld over kolommen.
De volgende keer dat je importeert zal de oude data gewist worden en de nieuwe data erin geschreven worden.
Let op, de tabbladen worden dus eenmalig aangemaakt.
 

Bijlagen

Zier er zeer goed uit en vooral razendsnel.

Toch nog enkele vraagjes
1. De data zou op reeds bestaande tabbladen moeten komen die reeds een bepaalde naam reeds hebben
2. De data dient soms op bepaalde posities te komen (vb. op kolom K of enkel in de eerste 10 kolommen)
3. Maand2 zou net onder Maand1 moeten komen op hetzelfde tabblad en zonder de header van maand2 (wel bij maand1) omdat er matrixberekeningen gebeuren en die verdragen geen text.

Ik verplicht je tot niets hoor SuperZeeuw, maar ben je nu alvast erg dankbaar.
Als ik nog eens naar Domburg aan zee rij zal ik eens aan je denken als ik door Middelburg rijd .
 
Jan,

Kun je specifiekere informatie geven.

Hoe heten de tabbladen?
Welke data moet waar komen en welke kolommen wel en welke niet?

Bijgevoegd een nieuwe variant die de maand_1 en maand_2 op tabblad Maanden wegschrijft onder elkaar.
 

Bijlagen

Superzeeuw

Allereerst mijn beste wensen voor 2011.
Sorry voor de late respons (weekje verlof gehad), deed goed.

Het voorbeeld van de excel sheet dat ik je stuurde is een verkorte versie van de volledige planningssheet.
In het tabblad "maanden" staat in de productie-versie ook dat ingevuld in de kolommen K en volgende.
Als je het script zo zou kunnen aanpassen dat ik het principe begrijp over hoe slechts bepaalde kolommen te importeren, ben ik al een heel stuk op de goede weg.

Bedankt alvast.
 
Jan,

Hetgeen jij mij ooit gestuurd hebt zijn de diverse typen bestanden maar nooit een excel voorbeeld.

Toch nog eens de vraag:
Probeer zo duidelijk mogelijk aan te geven welke data je waar wilt hebben.

Als ik er een voordoe moet jij zeker de andere kunnen nabouwen.
 
Superzeeuw
Wegens drukte deze wat late reactie, sorry.
Als bijlage een TXT en XLSX bestand als voorbeeld
In het XLSX dienen enkel bepaalde kolommen uit de TXT geimporteerd te worden.

In kolom A dient de 5e kolom uit IMPORT.TXT te komen (Geslacht_M/V)
In kolom B dient de 2e kolom uit IMPORT.TXT te komen (FamilieNaam)
In kolom C dient de 3e kolom uit IMPORT.TXT te komen (Voornaam_1)
In kolom D dient de 1e kolom uit IMPORT.TXT te komen (RijksregisterNr)

Ik hoop dat je hiermee een voorbeeld kan uitwerken?
Dank alvastBekijk bijlage IMPORT.TXTBekijk bijlage TEST.xlsx
 
Met een macro opnemen ben ik tot dit resultaat gekomen.

Code:
Sub Macro2()
    Range("A1:A12").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 9), Array(5, 1), Array(6, 9), _
        Array(7, 9), Array(8, 9), Array(9, 9), Array(10, 9), Array(11, 9), Array(12, 9), Array(13, 9 _
        ), Array(14, 9), Array(15, 9), Array(16, 9), Array(17, 9), Array(18, 9), Array(19, 9), Array _
        (20, 9), Array(21, 9), Array(22, 9), Array(23, 9), Array(24, 9), Array(25, 9), Array(26, 9), _
        Array(27, 9), Array(28, 9), Array(29, 9), Array(30, 9), Array(31, 9), Array(32, 9), Array( _
        33, 9), Array(34, 9), Array(35, 9), Array(36, 9), Array(37, 9)), TrailingMinusNumbers _
        :=True
    Columns("D:D").Cut
    Columns("A:A").Insert Shift:=xlToRight
    Columns("C:C").Cut
    Columns("B:B").Insert Shift:=xlToRight
    Columns("D:D").Cut
    Columns("C:C").Insert Shift:=xlToRight
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan