Das Datum ist nicht Excel konform

Von: , Frage gestellt am Sa, 10. Okt 2009

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

8 Antworten zu dieser Frage

  1. Antwort von nach 19 Minuten 0 hilfreich
    Re: Das Datum ist nicht Excel konform

    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

  2. Antwort von nach 18 Stunden 0 hilfreich
    Re: Das Datum ist nicht Excel konform

    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 <= Year(Date) - 2000 Then
    Jahr = 2000 + Jahr
    Else
    Jahr = 1900 + Jahr
    End If
    'Monat ermitteln
    Monat = CLng(Mid(strText, 3, 2))
    'Tag ermitteln
    Tag = CLng(Mid(strText, 1, 2))
    'Datum in neuem Format ermitteln
    strDatum = Format(DateSerial(Jahr, Monat, Tag), "DD.MM.YYYY")
    'Umgewandeltes Datum in Zelle einfügen
    objZelle.Range.Text = strDatum
    End If
    Next
    Else
    MsgBox "Bitte Cursor in Tabellen-Spalte mit zu konvertierendem Datum positionieren."
    End If
    End Sub
    

    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 <= Year(Date) - 2000 Then
    Jahr = 2000 + Jahr
    Else
    Jahr = 1900 + Jahr
    End If
    'Monat ermitteln
    Monat = CLng(Mid(strDatum, 3, 2))
    'Tag ermitteln
    Tag = CLng(Mid(strDatum, 1, 2))
    'Umgewandeltes Datum in Zelle einfügen
    objZelle.Value = DateSerial(Jahr, Monat, Tag)
    End If
    Next
    End Sub
    

    • Antwort von nach 20 Stunden 0 hilfreich
      Nachfrage

      Hallo Franz,

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

      Gruß
      Reinhard

      • Antwort von nach 21 Stunden 0 hilfreich
        Re: Nachfrage

        Hallo Reinhard,

        da hast du wohl Franz' erste Zeile nicht gelesen ;)

        Cheers, Felix

        • Antwort von nach 22 Stunden 0 hilfreich
          Re^2: Nachfrage

          da hast du wohl Franz' erste Zeile nicht gelesen ;)
          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

      • Antwort von nach einem Tag 0 hilfreich
        Re: Nachfrage

        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(

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Das Datum ist nicht Excel konform

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

      LG Walter

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: Das Datum ist nicht Excel konform

        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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!