Das Datum ist nicht Excel konform

Guten Tag,
das Geburtsdatum in einer Word 2003 Tabelle ist mit 250265 für den 25.02.65 eingetragen, gibt es ein Makro
das das Datum korrekt ändert

Danke für Eure Antworten

das Geburtsdatum in einer Word 2003 Tabelle ist mit 250265
für den 25.02.65 eingetragen, gibt es ein Makro
das das Datum korrekt ändert

Hallo Walter,

gut möglich.
Vielleicht gibts auch keins, wie soll z.B. ein Makro 11165 deuten?

So oder so, rück mal mehr Informationen raus.

Gruß
Reinhard

Hallo Walter,

wenn das Datum immer aus 6 Ziffern besteht, dann funktioniert die folgende Konversion. Dazu Cursor in Tabellenspalte mit dem Datum positionieren, dann Makro starten.

Dass Makro kannst du in einem Modul deiner Normal.dot speichern.

Gruß
Franz

'Erstellt unter Word 2007

Sub DatumKonversion\_Var01()
 Dim objZelle As Cell, objTabelle As Table
 Dim Zeile As Long, Spalte As Long
 Dim strText As String, strDatum As String
 Dim Jahr As Long, Monat As Long, Tag As Long
 'Prüfen ob Cursor in Tabelle positioniert ist
 If Selection.Information(wdWithInTable) Then
 'Tabelle an Cursorposition der Objektvariablen zuweisen
 Set objTabelle = Selection.Tables(1)
 'Spalten-Nummer der aktuellen Cursorposition ermitteln
 Spalte = Selection.Columns(1).Index
 For Zeile = 1 To objTabelle.Rows.Count
 Set objZelle = objTabelle.Cell(Zeile, Spalte)
 'Text in Zelle
 strText = objZelle.Range.Text
 'Zeichen für Zellenende abtrennen
 strText = Mid(strText, 1, Len(strText) - 2)
 'Prüfen, ob Text eine Zahl ist
 If IsNumeric(strText) And Len(strText) = 6 Then
 'Jahr ermitteln - Bedingung bei welchen Jahreszahlen mit 2000 bzw. 1900 \_
 gerechent werden soll ggf. anpassen
 'Falls sowohl Jahreszahlen von 1900 bis 1909 als auch 2000 bis 2009 \_
 vorkommen könne, dann muss ggf. manuell die Jahreszahl korrigiert werden.
 Jahr = CLng(Mid(strText, 5, 2))
 If Jahr 
Du kannst die Konversion natürlich auch nach dem Einfügen in Excel durchführen. Das entsprechende Makro in Excel sieht wie folgt aus.


    Sub DatumKonversion()
     'wandelt selektierter Spalte Zahlen, deren 5 bzw. 6 Ziffern ein Datum repräsentieren \_
     in ein Exceldatum um.
     'Zahlen: 10299 = 01.02.1999 \_
     110233 = 11.02.1933 \_
     221108 = 22.11.2008
     Dim objRange As Range, objZelle As Range
     Dim strDatum As String
     Dim Jahr As Long, Monat As Long, Tag As Long
     'Zellen mit Daten in Spalte mit selektierter Zelle als Bereich festlegen
     Set objRange = Range(Cells(1, ActiveCell.Column), \_
     Cells(Rows.Count, ActiveCell.Column).End(xlUp))
     For Each objZelle In objRange
     If IsNumeric(objZelle) And (Len(objZelle) = 5 Or Len(objZelle) = 6) Then
     strDatum = Format(objZelle.Value, "000000")
     'Jahr ermitteln - Bedingung bei welchen Jahreszahlen mit 2000 bzw. 1900 \_
     gerechent werden soll ggf. anpassen
     'Falls sowohl Jahreszahlen von 1900 bis 1909 als auch 2000 bis 2009 \_
     vorkommen könne, dann muss ggf. manuell die Jahreszahl korrigiert werden.
     Jahr = CLng(Mid(strDatum, 5, 2))
     If Jahr 

Nachfrage
Hallo Franz,

woher weißt du daß
10299 = 01.02.1999
gilt, und nicht
10299 = 10.02.1999

Gruß
Reinhard

Hallo Reinhard,

da hast du wohl Franz’ erste Zeile nicht gelesen :wink:

Cheers, Felix

da hast du wohl Franz’ erste Zeile nicht gelesen :wink:

Hallo Felix,

habe ich schon, aber ich habe nur Franz weiter unten in seinem Beitrag zitiert.

Und schon klar, uns Dreien ist klar daß das nur per Vba zu lösen ist wenn es immer 6-stellig ist.
Auch ohne Vba in Excel nur dann wenn es immer 6-stellig ist.

Dann sah ich aber den Code von Franz und seine Remarks und fragte nach.

Gruß
Reinhard

Hallo Reinhard,

woher weißt du daß
10299 = 01.02.1999
gilt, und nicht
10299 = 10.02.1999

in der ursprünglichen Frage

das Geburtsdatum in einer Word 2003 Tabelle ist mit 250265 für den 25.02.65 eingetragen,
gibt es ein Makro, dass das Datum korrekt ändert.

ist der Monat mit führender 0 angegeben. Da bin ich zunächst einmal davon ausgegangen, dass das Datum immer mit 6 Ziffern angegeben ist.

Sollte das Datum ohne führende 0, der Monat mit führender 0 angegeben sein, dann kann man die Konversion trotzdem realisieren, indem man bei fünf Ziffern die fehlende führende 0 vor der Bestimmung von Jahr, Monat und Tag einfügt.

Gruß
Franz
strText=Format(

Hallo Franz,
wunderbar, genau das hab ich gesucht.
hat wunderbar funktioniert.
muss mich wirklich mehr mit VBS beschäftigen.
Danke !

LG Walter

Hallo Walter!

mit VBS beschäftigen.

Nur eine kleine Anmerkung von mir. Du wirst dich wohl mit VBA (Visual Basic for Applications) beschäftigen wollen, wenn du in Excel etwas programmieren willst.

mfg
christoph