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

CSV bestand gedeeltelijk laden

Status
Niet open voor verdere reacties.

gelens

Terugkerende gebruiker
Lid geworden
4 dec 2009
Berichten
1.116
Hallo,

Ik ontvang regelmatig een CSV bestand met vele 100.000-den regels. Van deze regels heb ik slechts een zeer klein gedeelte nodig.
Momenteel open ik het bestand in Excel en filter daarna de regels er uit. Helaas komt het voor dat het bestand te groot wordt voor excel.
Is het mogelijk om het bestand te filteren voordat het in Excel komt ?
In bijgevoegd bestand een klein voorbeeld van wat het bestand zou kunnen bevatten. Als er in kolom 10 een a staat dan heb ik deze regel niet nodig.

Helaas lukt het niet om een CSV bestand toe te voegen. Daarom maar een excel bestand.
Hopelijk weet iemand hier een oplossing voor.
 

Bijlagen

Code:
Sub M_snb()
  sn=filter(split(createobject("scripting.filesystemobject").opentextfile("G:\OF\voorbeeld.csv").readall,vbcrlf),";a;",false)

  cells(1).resize(ubound(sn)+1)=application.transpose(sn)
End Sub
 
Hallo

Bedankt voor de snelle reactie.
Als ik het goed begrijp wordt nu elke regel waar een a tussen ;; staat ; A; er uit gefilterd.

Dus niet alleen als dat in kolom 10 het geval is.
Is wat mij betreft een perfecte oplossing. de kans dat er in een andere kolom slechts een a voorkomt is minimaal.

Ik ga het morgen testen.

groet
 
Beste SNB,

Bij het gebruik van de macro op kleine bestanden loopt het perfect. Helaas bij grotere bestanden niet.


Code:
Sub M_GL()
Dim Bestand As String
Bestand = Application.GetOpenFilename("sylkfiles (*.*),*.*", , "Selecteer een bestand")

  sn = Filter(Split(CreateObject("scripting.filesystemobject").OpenTextfile(Filename:=Bestand).readall, vbCrLf), "|a|", False)
   
  Cells(1).Resize(UBound(sn) + 1) = Application.Transpose(sn)
 
    
End Sub

Wordt deze fout veroorzaakt door een te groot aantal regels ? Daar was deze macro juist voor bedoeld.
 

Bijlagen

  • Fout 1.PNG
    Fout 1.PNG
    3,4 KB · Weergaven: 27
  • Fout 2.PNG
    Fout 2.PNG
    2,2 KB · Weergaven: 27
MS is 'vergeten' bij de introductie van Excel 2007 sommige werkbladfunkties aan te passen aan de nieuwe afmetingen van een werkblad: bijv. index en transpose.

Los dit op met een lus:
Code:
Sub M_GL()

  sn = Filter(Split(CreateObject("scripting.filesystemobject").OpenTextfile(Application.GetOpenFilename("sylkfiles (*.*),*.*", , "Selecteer een bestand")
).readall, vbCrLf), "|a|", False)

  for j=0 to ubound(sn)  
    Cells(j+1,1) = sn(j)
  next
End Sub
 
Laatst bewerkt:
Snb

Bedankt voor deze oplossing.
Werkt super.

:thumb:
 
As je voor dit soort wensen iets nieuws wilt ontdekken installeer dan Power Query. Is nu een gratis add-in. Zit in Office 2016 ingebouwd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan