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

NL excel herkent Engelse datum niet

Status
Niet open voor verdere reacties.

sumisu

Gebruiker
Lid geworden
6 aug 2010
Berichten
6
Hallo,

Met behulp van een VBA macro haal ik informatie uit een tekstbestand, waaronder tekst, getallen, tijdstippen en data. De tekstbestanden zijn engelstalig en de datum staat daarin als volgt genoteerd: "23 July, 2010". Mijn Excel versie is Nederlands (2007). Als ik de datum in een cel laat zetten door mijn macro herkent excel het niet als een datum (dus kan ik er geen specifieke bewerkingen mee doen), ook niet als ik het correcte format geef (d mmmm, yyyy). Wat is de beste manier om dit op te lossen (bij voorkeur binnen mijn VBA macro)?
Bij voorbaad dank...
 
Beste,

Bij het importeren verdeel je het datumveld in drie delen:
dagen - maanden - jaren
Daarnaast importeer je een leeg veld om vervolgens via VBA de maanden om te zetten naar een voor NL herkenbare omschrijving. Dus July wordt Juli, May wordt mei, October wordt Oktober etc.
Vervolgens plak je de drie datumvelden aan elkaar in de NL volgorde.
Je moet wel even testen en creatief zijn met VBA, maar dan denk ik dat het wel lukt.

Richard
 
Beste,

Bij het importeren verdeel je het datumveld in drie delen:
dagen - maanden - jaren
Daarnaast importeer je een leeg veld om vervolgens via VBA de maanden om te zetten naar een voor NL herkenbare omschrijving. Dus July wordt Juli, May wordt mei, October wordt Oktober etc.
Vervolgens plak je de drie datumvelden aan elkaar in de NL volgorde.
Je moet wel even testen en creatief zijn met VBA, maar dan denk ik dat het wel lukt.

Richard

Hmmm, ik had gehoopt dat ik VBA duidelijk kon maken dat de invoer Engels is en hij er als zodanig mee omgaat, maar dat is dus naief :). Bedankt voor deze work-around, ik ga een look-up table maken voor de maanden.

Gr,
Casper
 
sumisu,

post anders eens een voorbeeldje zonder gevoelige informatie....
 
sumisu,

post anders eens een voorbeeldje zonder gevoelige informatie....

Haije,

Dit heb ik er nu van gemaakt, de datum in het voorbeeld (StrDateFull) is nu vast, wordt in mijn eigen programma uit een tekstbestand gehaald in hetzelfde format.

Code:
Sub DatumTestje()

Dim StrDateFull As String
Dim StrDag As String
Dim StrMaand As String
Dim StrJaar As String
Dim oRow As Long

Set wks = Worksheets.Add

oRow = 1
StrDateFull = "07 July, 2010"
StrDag = Left(StrDateFull, 2)
StrMaand = DateENtoDbl(Mid(StrDateFull, 4, Len(StrDateFull) - 9))
StrJaar = Right(StrDateFull, 4)
wks.Cells(oRow, "A").Value = DateValue(StrDag & " " & StrMaand & " " & StrJaar)

End Sub

Function DateENtoDbl(DateEN As String) As Double

DateENtoDbl = Switch(DateEN = "January", "1", DateEN = "2", "februari", _
DateEN = "March", "3", DateEN = "April", "4", DateEN = "May", "5", _
DateEN = "June", "6", DateEN = "July", "7", DateEN = "August", "8", _
DateEN = "September", "9", DateEN = "October", "10", _
DateEN = "November", "11", DateEN = "December", "12")

End Function

Ik ben benieuwd naar je tips...
 
Sumisu,

wat ik eigenlijk bedoelde was: post eens een voorbeeld van het te laden bestand of een geladen (maar niet bewerkt) bestand.
Dan gaat er wellicht ergens een lampje branden: zou het ook zo kunnen?

Aan wat je nu gepost hebt heb ik niets aan toe te voegen.
Volgens mij heb je hier exact uitgewerkt wat Richard je aangaf; ik denk dat het uitstekend werkt.
 
Er zat een foutje in je functie bij de maand februari(tekst en getal omgedraaid). Ook is het niet nodig om de getallen tussen aanhalingstekens te plaatsen.
Code:
Function DateENtoDbl(DateEN As String) As Double
    DateENtoDbl = Switch(DateEN = "January", 1, DateEN = "February", 2, _
    DateEN = "March", 3, DateEN = "April", 4, DateEN = "May", 5, _
    DateEN = "June", 6, DateEN = "July", 7, DateEN = "August", 8, _
    DateEN = "September", 9, DateEN = "October", 10, _
    DateEN = "November", 11, DateEN = "December", 12)
End Function
 
wat ik eigenlijk bedoelde was: post eens een voorbeeld van het te laden bestand of een geladen (maar niet bewerkt) bestand.

Zie bijlage.
Ik heb meerdere gegevens uit zo'n bestand nodig, wat ik doe is zoeken in het bestand naar de regels die ik nodig heb, bijvoorbeeld: "Exam. date and time: ", "Cumulative fluoroscopy time: " en "Total DAP: ". De samenstelling van het bestand wil nog wel eens variabel zijn :(, daarom kies ik ervoor om het bestand te scannen op de gegevens die ik nodig heb. Zodra ik een regel heb gevonden plaats ik de inhoud daarvan in een cel (bijvoorbeeld dus de datum uit de regel "Exam. date and time: ")

Overigens heb ik nog weinig ervaring met VBA, wel met programmeren (in Matlab), dus ken ik veel VBA functies nog niet.
 

Bijlagen

  • Example.txt
    1,7 KB · Weergaven: 54
Sumisu,

als ik het goed begrijp lees je via VBA het tekst bestand in.

Doe je regel voor regel of alles in één keer?

In het tweede geval zou je na het bestand binnen gehaald te hebben, maar vóór erdere bewerkingen, een zoek (engelse maandnamen) en vervang (NL maandnamanen) kunnen toepassen.
 
Ik lees het regel voor regel in; ik heb slechts enkele gegevens nodig. Zodra ik die tegenkom zet ik ze in een cel. Het gaat dus niet werken om eerst in het bestand de tekst te vervangen.
 
Sumisu,

ook in dat geval kun je na het inlezen een zoek/vervang toepassen en daarna evt bewerkingen uitvoeren.

Kun je anders een bestandje posten met het resultaat ná inlezen (incl de gebruikte macro)?
 
Bedankt voor de geposte oplossingen, mijn probleem is opgelost! Wellicht niet de mooiste oplossing, maar voldoende voor het doel wat ik voor ogen had (en dat is het belangrijkste). Haije: ik ben tevreden met de oplossing zoals die nu is... Mocht er om andere redenen behoefte zijn aan de macro dan post ik hem graag.

Gr,
Casper
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan