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

Inlezen .csv

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Zou iemand voor mij een macro kunnen schrijven waarbij bankgevens (.csv) ingelezen worden in excel? De bedragen in de drie kolommen 'bij', 'af' en 'saldo' graag afronden in 2 dec.
Voorbeeld csv-file in bijlage.Bekijk bijlage DATA_1jan2013.rar

Alvast bedankt.
Jansm
 
Jansm,

Een macro heb je helemaal niet nodig.
-Open het bestand met Excel, de regels worden nu in de eerste kolom geplaatst, deze kolom moeten we nu splitsen, dit kan automatisch.
-Selecteer kolom A.
-Ga in het lint naar "Gegevens" en in "Hulpmiddelen voor gegevens" kies voor "Tekst naar kolommen".
-Er opent zich nu een schermpje. Het bestand kent velden die gescheiden worden door komma's.
-Kies voor "Gescheiden" en klik op volgende. Vink "Komma" aan, de rest mag uit.
-Klik op voltooien, de kolommen staan nu goed.
Aangezien dit een bestand betreft met meerdere rekeningnummers ga ik er van uit dat je de gegevens zal
gaan splitsen over verschillende bestanden. Als je dit doet met kopiëren en waarden zul je van de opmaak
geen last hebben.

Veel Succes.
 
Hallo Elsendoorn2134,

Bedankt voor jouw reactie.
deze methode ken ik. Maar met een macro hoef je minder stappen/handelingen te ondernemen. Dus als je zin/tijd hebt.......
 
dit is alleen toepasbaar op direct gedownloade gegevens (.txt) van de bank, en niet op .csv-files. Dus een macro zou voor mij welkom zijn.
 
Jansm,

Een macro is wel mogelijk maar dan moet ik wel een csv bestand van je bank hebben.
Wat je opgestuurd hebt is gemaakt met behulp van Excel vandaar ook dat je in het bestand
behalve de bankgegevens ook lege regels en andere gegevens te vinden zijn.
Dit bestand heeft andere veld instellingen dan een bestand dat je van je bank krijgt.
Vergelijk de bestanden maar eens met elkaar.

Graag een nieuw bestand.

Veel Succes.
 
dit is alleen toepasbaar op direct gedownloade gegevens (.txt) van de bank, en niet op .csv-files. Dus een macro zou voor mij welkom zijn.

Merkwaardig en ik altijd maar denken dat een.csv bestand een tekstfile is.

Klik in tabje splits op de knop een er wordt een nieuwe tab aangemaakt met de data naar kolommen gesplitst.
 

Bijlagen

Hallo VenA, sorry voor de ogenschijnlijke domme reactie van mij. Ik ben niet voor niets een beginneling en jij een senior member!!!!

Bedankt voor de macro, alleen een paar opmerkingen. De datum wordt niet overal hetzelfde ingelezen/weergegeven en sommige bedragen in 'bij', 'af' en 'saldo' wordt soms als getal en soms als tekst ingelezen. Soms wordt als decimaal een punt, soms als komma weergegeven. Kan je dat rechtbreien voor mij?

Het zou fijn zijn als met een klik op de 'SPLITSEN'-button een csv-file uit een bepaalde folder gekozen kon worden. Ook mogelijk?

Mvg, Jansm
 
Kan je even aangeven in welke rijen zich dit voordoet? Datums heb ik wel gevonden maar de getallen die verkeerd zouden staan nog niet.
 
Je hebt het bestand waarschijnlijk handmatig gesplitst dmv tekst naar kolommen en geen gebruik gemaakt van de knop?

Zo ja, dan moet je bij stap 3 van 3 op geavanceerd klikken en aangeven wat de scheidingstekens moeten zijn. Bij decimaalteken moet een "," staan en bij duizendtallen een "."
 
Test deze eens.
Code:
Sub hsv()
Dim sq, cl As Range, cll As Range
Application.ScreenUpdating = False
sq = Split(Cells(1), ",")
 Cells(1).Resize(, UBound(sq)) = sq
  For Each cl In Columns(1).SpecialCells(2).Offset(1).SpecialCells(2)
    cl.Replace """,""", "|"
    cl.Replace ",""", "|"
       sq = Split(cl, "|")
    cl.Resize(, UBound(sq)) = sq
 Next cl
    Columns.AutoFit
 For Each cll In Application.Union(Columns(2), Columns(7), Columns(8), Columns(9)).SpecialCells(2)
   If IsNumeric(cll.Value) Then cll = cll.Value * 1
 Next cll
 Columns("G:I").NumberFormat = "0.00"
End Sub
 
Hallo VenA & HSV,
bedankt voor jullie reactie.
VenA, niet handmatig gesplits maar via jouw macro(knop).

HSV, deze werk perfect. Ik zou graag via een knop een csv-file in een bepaalde folder willen kiezen, kan dat nog?

Jullie beide alvast erg bedankt voor jullie tijd
 
Helaas heb ik nergens op de Pc een .cvs bestand staan, dus kan het niet voor je testen.
Als ze dezelfde indeling hebben.

Code:
Sub hsv()
Dim sq, cl As Range, cll As Range
With Application.FileDialog(msoFileDialogOpen)
  .InitialFileName = "C:\Users\HSV\Documents"
  .Filters.Add "CSV Bestanden (.csv)", "*.csv", 1
  .FilterIndex = 1
 If .SelectedItems.Count = 1 And .Show = -1 Then
 
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets(1)
sq = Split(.Cells(1), ",")
 .Cells(1).Resize(, UBound(sq)) = sq
  For Each cl In .Columns(1).SpecialCells(2).Offset(1).SpecialCells(2)
    cl.Replace """,""", "|"
    cl.Replace ",""", "|"
       sq = Split(cl, "|")
    cl.Resize(, UBound(sq)) = sq
 Next cl
    .Columns.AutoFit
 For Each cll In Application.Union(.Columns(2), .Columns(7), .Columns(8), .Columns(9)).SpecialCells(2)
   If IsNumeric(cll.Value) Then cll = cll.Value * 1
 Next cll
 .Columns("G:I").NumberFormat = "0.00"
   End With
  End If
 End With
End Sub
 
Erg vreemd.
Bij het openen van het bestand wordt de eerste rij direct goed neergezet, die eigenlijk door de code moest gebeuren.
Test het zo maar eens.
Code:
Sub hsv()
Dim sq, cl As Range, cll As Range
With Application.FileDialog(msoFileDialogOpen)
  .InitialFileName = "C:\Users\HSV\Desktop"
  .Filters.Add "CSV Bestanden (.csv)", "*.csv", 1
  .FilterIndex = 1
 If .SelectedItems.Count = 1 And .Show = -1 Then
 Workbooks.Open .SelectedItems(1)
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets(1)
'sq = Split(.Cells(1), ",")
' .Cells(1).Resize(, UBound(sq)) = sq
  For Each cl In .Columns(1).SpecialCells(2).Offset(1).SpecialCells(2)
    cl.Replace """,""", "|"
    cl.Replace ",""", "|"
       sq = Split(cl, "|")
    cl.Resize(, UBound(sq)) = sq
 Next cl
    .Columns.AutoFit
 For Each cll In Application.Union(.Columns(2), .Columns(7), .Columns(8), .Columns(9)).SpecialCells(2)
   If IsNumeric(cll.Value) Then cll = cll.Value * 1
 Next cll
 .Columns("G:I").NumberFormat = "0.00"
   End With
  End If
 End With
End Sub
 
@HSV heeft geen voorbeeldjes nodig. Plaats even een voorbeeldje met in blad1 de eerste ± 30 regels van jouw .csv dus nog niet gesplitst. Sla het bestand op als een .xlsm. Zodat we kunnen zien hoe je de aangereikte code toepast. En plaats dat hier. Dus niet elke keer het "mislukte" resultaat.
 
Is de macro toch erg ver gekomen. :d

Gekheid natuurlijk.

Graag wil ik weten op welke coderegel de macro vast loopt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan