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

Tekstveld aanpassen en omzetten naar datum

Status
Niet open voor verdere reacties.

kobusknots

Gebruiker
Lid geworden
2 jan 2012
Berichten
11
Wie kan mij helpen met het volgende probleem. Ik heb een csv export uit een projectplanningtool waarbij de datums in een bijzondere opmaak worden getoond. Als voorbeeld: Dec 20 2018 12\:00AM, Jan 1 2019 12\:00AM, May 15 2019 12\:00AM
etc. De vreemde tijdweergave verwijder ik door naast de datumvelden een kolom in te voegen en met 'Tekst naar kolommen' het veld op te knippen. Vervolgens verwijder ik de hulpkolom weer. In het bestand staan 6 kolommen met datums (kolom E t/m J) dus dit kost even tijd om uit te voeren. Vraag 1: is er een manier (VBA?) om dit sneller te kunnen doen?
Vervolgens houd ik met een tekstveld over dat ik graag omgezet wil hebben in een datumveld in het formaat dd-mm-jjjj. Ik heb al iets geprobeerd met de functies DATUM(), LINKS(), RECHTS() en DEEL() maar door het verschil in opmaak en positie van de verschillende dagen kwam ik daar niet uit. Vraag 2: heeft iemand heer een oplossing voor? Het zou mooi zijn als beide problemen in één oplossing opgelost kunnen worden.
Alvast bedankt voor een reactie

Gr.
Kobus

Bekijk bijlage Voorbeeld tekst naar datum.xlsx
 
Als je het met VBA wil oplossen kun je beter het csv bestand plaatsen.

Code:
Sub M_snb()
   Cells.Replace " 12\:00AM", "", 2
   
   sn = Split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
   For j = 0 To 11
      Cells.Replace sn(j), Format(j + 1, "00"), 2
   Next
   
   For Each it In Sheet1.UsedRange.Columns(5).Resize(, 5).SpecialCells(2)
       If it.Row > 1 Then it.Value = DateSerial(Right(it, 4), Left(it, 2), Trim(Mid(it, 3, 4)))
   Next
End Sub
 
Laatst bewerkt:
Bedankt voor je snelle reactie. De code werkt nog niet helemaal perfect. Het verwijderen van de tijdsaanduiding gaat prima.
De macro stopt wel met de melding

VB_fout1.PNG

en hierna

VB_fout2.PNG

Ik heb als bijlage ook het csv bestand bijgevoegd.

Bekijk bijlage ExcelOutput.csv

Is het moeilijk de datums in dd-mm-yyyy om te zetten?
 
Dan heb je de macro niet gebruikt in het bestand dat je plaatste.

De 'CSV' macro

Code:
Sub M_snb()
   With CreateObject("scripting.filesystemobject")
      c00 = Replace(Replace(.opentextfile("G:\OF\Exceloutput.csv").readall, " 12\:00AM", ""), "  ", " ")
      
      sn = Split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
      For j = 0 To 11
        c00 = Replace(c00, sn(j), Format(j + 1, "00"), , , 1)
      Next
        
      sn = Split(c00, vbCrLf)
      For j = 2 To UBound(sn)
        st = Split(sn(j), ";")
        For jj = 4 To UBound(st)
          If st(jj) <> "" Then st(jj) = Right(st(jj), 4) & "-" & Left(st(jj), 2) & "-" & Trim(Mid(st(jj), 4, 2))
        Next
        sn(j) = Join(st, ";")
      Next
      
      .createtextfile("G:\OF\new_Exceloutput.csv").write Join(sn, vbCrLf)
    End With
End Sub
 
Laatst bewerkt:
Thanks! Het werkt perfect

Toch iets te vroeg gejuigd :-(
Er wordt nog gesleuteld aan het csv bestand. Hierdoor verandert de output. De nieuwe export heeft na kolom J nog 8 extra kolommen (kolom K t/m R). De datumvelden die moeten worden aangepast houden wel dezelfde positie (kolom E t/m J). Ik probeer de code te lezen maar het lukt mij niet (ben geen programmeur) om de juiste aanpassing te doen. Wat moet ik aanpassen?

Bekijk bijlage ExcelOutput.csv
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan