Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum aus Dateinamen an beliebiger Position ausles

Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 12:35:25
Alwin
Hallo zusammen,
Ich habe mehrere Dateien welche ich regelmäßige bearbeiten und mit aktuellem Datum abspeichern muss. Hierfür habe ich mir ein Makro geschrieben, welches die Datei automatisch abspeichert.
Das funktioniert soweit ganz gut, da die meisten Dateien das Datum entweder am Anfang haben bzw. am Ende. Dabei kann die Form des Datums von yyyymmdd zu yymmdd variieren.
Mein Problem ist nun, das ich aktuell immer über eine Userform abfrage welches Format vorliegt und an welcher Position das Datum ist. Wenn das Datum mitten im Dateinamen steckt funktioniert das so nicht mehr.
Gibt es eine Möglichkeit automatisch die Form und die Position des Datums zu erkennen und auszutauschen?
Mein aktueller Code im Modul sieht so aus (Dposition und Datum sind globale Variablen welche _
ich über die Userform definiere):

Public Sub Save()
Application.ScreenUpdating = False
Dim sEndung As String
Dim ilaenge As Integer
Dim iZeichenPkt As Integer
ilaenge = Len(ActiveWorkbook.Name)
iZeichenPkt = InStrRev(ActiveWorkbook.Name, ".")
sEndung = Right(ActiveWorkbook.Name, iWortlaenge - iStellePunkt + 1)
AbfrageD.Show
Dim neu As String
If Dposition = "Ende" Then
neu = Replace(ActiveWorkbook.Name, sEndung, "")
neu = Left(neu, Len(neu) - Len(Datum))
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & neu & Datum & sEndung
Else
neu = ActiveWorkbook.Name
neu = Right(neu, Len(neu) - Len(Datum))
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Datum & neu
Application.ScreenUpdating = True
End If
End Sub
PS: Über Vorschläge, wie der Code besser zu gestalten wäre bin ich immer Dankbar. Man will sich ja immer weiterentwickeln.
Vielen Dank im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 12:47:13
Rudi
Hallo,
ist das Datum die einzige 6- bzw. 8-stellige Zahl im Dateinamen?
Gruß
Rudi
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 12:54:43
Alwin
Hallo Rudi,
Leider nicht, es kann noch andere 6-Stellige Zahlenfolgen geben. Nur bei den 8-stelligen Zahlenfolgen gibt es nur das Datum.
Mfg
Alwin
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 13:06:49
UweD
Hast du mal Textbeispiele?
Wenn in der Mitte des Texttes.. wenigstens Leerzeichen davor und dahinter?
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 13:30:03
Daniel
Hi
probiers mal so:
Sub test()
Dim NameAlt As String
Dim NameNeu As String
Dim txt As String
Dim i As Long
Dim NeuesDatum As Date
NeuesDatum = Date
NameAlt = ActiveWorkbook.Name
'--- Datum 8 stellen
If NameAlt Like "*########*" Then
For i = 1 To Len(NameAlt) - 7
txt = Mid(NameAlt, i, 8)
If txt Like "########" Then
If IsDate(Format(CLng(txt), "0000-00-00")) Then
NameNeu = NameAlt
Mid(NameNeu, i, 8) = Format(NeuesDatum, "YYYYMMDD")
Exit For
End If
End If
Next
End If
'--- Datum 6-Stellen
If NameNeu = "" And NameAlt Like "*######*" Then
For i = 1 To Len(NameAlt) - 5
txt = Mid(NameAlt, i, 6)
If txt Like "######" Then
If IsDate(Format(CLng(txt), "00-00-00")) Then
NameNeu = NameAlt
Mid(NameNeu, i, 6) = Format(NeuesDatum, "YYMMDD")
Exit For
End If
End If
Next
End If
If NameNeu = "" Then
MsgBox "kein Datum gefunden"
Else
MsgBox NameAlt & vbLf & NameNeu
End If
End Sub
zuerst wird nach dem 8-Stelligem Datum gesucht und wenn dieses nicht vorhanden ist nach dem 6-stelligen.
wenn im Namen auch andere 6-Stellige Zahlenkombinationen vorkommen können, dann kann es natürlich passieren, dass diese dann anstelle des echten Datums ausgetauscht wird.
hier wäre es hilfreich zu wissen, ob das Datum am Anfang oder am Ende steht.
steht das Datum am Ende, müsste man die Schleife rückwärts laufen lassen, damit es als erstes gefunden wird.
ist die Postion unbekannt, hast du ein Problem.
Gruß Daniel
Anzeige
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 13:58:11
Alwin
Hallo Daniel,
Danke schonmal für den Code, ich werde ihn mal bei mir einbauen und durchlaufen lassen/versuchen zu verstehen.
Leider ist die Position des Datums in meinem speziellen Fall unbekannt.
Dann werde ich wohl das Datum weiterhin manuell anpassen müssen.
Trotzdem vielen Dank für die Mühen!
AW: Datum aus Dateinamen an beliebiger Position ausles
22.01.2019 14:14:38
Daniel
Hi
dann kannst du dir ja eine Abfrage einbauen, um selber entscheiden zu können, ob die Zahlenfolge das Datum ist oder nicht:
If NameNeu = "" And NameAlt Like "*######*" Then
For i = 1 To Len(NameAlt) - 5
txt = Mid(NameAlt, i, 6)
If txt Like "######" Then
If IsDate(Format(CLng(txt), "00-00-00")) Then
Select Case MsgBox(NameAlt & vbLf & "Ist " & txt & " das Datum?", vbYesNo)
Case vbYes
NameNeu = NameAlt
Mid(NameNeu, i, 6) = Format(NeuesDatum, "YYMMDD")
Exit For
Case vbNo
End Select
End If
End If
Next
End If

Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige