• 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.

kolommen tekort in excel bij importeren, visual basic macro

Status
Niet open voor verdere reacties.

gerardvz

Nieuwe gebruiker
Lid geworden
1 jul 2009
Berichten
3
Beste lezer,

Ik heb een probleem met importeren van een txt bestand, aangezien hij deze moet verdelen over de kolommen. Echter in het txt bestand zitten meer als 256 getallen per regel. Door wat zoek werk ben ik bij microsoft aangeland die een standaard macro heeft staan.
Deze heb ik omgebouwd en werkend gekregen voor 2 tabbladen, dus tot 510 (2x 255) tekens
echter mijn reeks is nog langer, >510 stuks

dus ombouw macro zodat ik naar 4 tabbladen verdeel

macro maakt 4 kolommen, waarbij hij de tekens eerst verdeelt in blokken van 255 tekens
om vervolgens deze in later fase per tabblad weer van tekst naar kolommen te verdelen
na de 16e regel geeft hij de de fout

fout 7 tijdens uitvoering: onvoldoende geheugen

weet iemand een oplossing

ik heb de excel en het basis txt bestand erbij gedaan

kan iemand mij helpen om mijn probleem op te lossen,

groet
GERARD
 

Bijlagen

  • 90-91-2.txt
    85,3 KB · Weergaven: 35
  • 90-91-2test.xls
    93 KB · Weergaven: 28
Laatst bewerkt:
Is gemakkelijk gezegd maar.....
Excel 2007 heft uw probleem op:
Limieten excel2007 ----> 1.048.576 rijen en 16.384 kolommen

Cobbe
 
Maar levert tegelijkertijd een hoop problemen erbij.....

Het kan eenvoudig (verdeling van gegevens over 4 werkbladen -want 873 kolommen- ) met:

Code:
Sub tst()
  Open "[COLOR="Teal"]E:\OF\90-91-2.txt[/COLOR]" For Input As #1
    sq = Filter(Filter(Split(Input(LOF(1), #1), vbCrLf), ", "), "Data", False)
  Close #1
  If Sheets.Count < 4 Then Sheets.Add , , 4
    
  For j = 0 To UBound(sq)
    st = Split(sq(j), ",")
    For jj = 251 To 751 Step 250
      st(jj) = "##" & st(jj)
    Next
    st = Split(Join(st, ","), ",##")
    For jj = 0 To UBound(st)
      Sheets(jj + 1).Cells(j +1, 1).Resize(, 250) = Split(st(jj), ",")
    Next
  Next
End Sub

NB. Groene markering aanpassen aan eigen situatie
 
Laatst bewerkt:
Toch nog niet helemaal geluk SNB,

op één of andere manier zet hij niets in de kolommen,
hij maakt wel netjes vier tabbladen aan, maar daar blijft het bij

ik heb in VB met f8 de code doorlopen, hij stapt na de tabbladen dan ook gelijk naar
het eind van de code

Wel duidelijk dat ik alleen in vb een plak en knipper ben en niet goed in de codes zit om het te volgen,

enig idee wat er loos is, want waarschijnlijk doet hij het bij jou wel

mvg

Gerard
 
Dat kan alleen maar betekenen dat er in het bestand dat je ingelezen hebt geen gegevens staan (of niet gescheiden door komma's).
Als je met F8 regel voor regel doorloopt en je met de cursor boven ubound(sq) gaat hangen moet je de waarde daarvan in een klein schermpje te zien krijgen. Als de waarde -1 is, betekent dat dat er geen gegevens zijn ingelezen.
Ik ben uitgegaan van jouw voorbeeldbestand (.txt). Als de opbouw van het bestand dat je nu gebruikt anders is, werkt de code natuurlijk ook niet meer.
 
Altijd geïnteresseerd naar de oplossingen van Snb; dus deze ook uitgeprobeerd, maar loop ook tegen een foutmelding aan! Bij mij loopt-ie vast op de tweede Filter statement. <Onjuist aantal argumenten, of ongeldige eigenschappentoewijzing> is de boodschap.

Michel
 
Code:
Open "E:\OF\90-91-2.txt" For Input As #1
    sq = Filter(Filter(Split(Input(LOF(1), #1), vbCrLf), ", "), "Data", False)
Close #1

even uit elkaar gooien:
Code:
Open "E:\OF\90-91-2.txt" For Input As #1
  sq = Input(LOF(1), #1)  [COLOR="Teal"]' lees de inhoud van het bestand[/COLOR]
  sq = Split(sq, vbCrLf)    [COLOR="teal"]' splits de inhoud per regel (die beeindigd wordt met vbCrLf)[/COLOR]
  sq = Filter(sq, ", ")   [COLOR="teal"]' filter alle regels die een komma bevatten (de regels met gegevens)[/COLOR]
  sq = Filter(sq, "Data", False)  [COLOR="teal"]' filter alle regels die het woord Data niet bevatten (het voorbeeldbestand had een regel met een komma zonder gegevens; die willen we niet)[/COLOR]
Close #1

Waarschijnlijk gaat het mis bij de regelspliting: bij mij gebeurt dat goed met vbCrLf, maar het kan ook vbCr, chr(13) of chr(10) zijn.
Test dat uit.
UItgangspunt voor de rest is het ontbreken van option Explicit (het declareren van variabelen is hier niet nodig voor goedwerkende code).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan