rentier
Goto Top

Teil eines Excel-Dateinamen in eine Zelle übernehmen

Betrifft Excel 2003

Hallo,

ich stehe vor folgendem Problem:

Ich habe eine Excel-Datei mit folgendem Dateinamen (nur eine von mehreren) "010508_Bauteilname.xls" der erste Teil der Datei ist fortlaufend für alle Tage eines Monats im Format "ttmmjj".
Ich würde nun gerne beim Öffnen der Datei in die Zeille A7 gerne automatisch den Datumsteil vor dem "_" als Datum in die genannte Zelle eintragen lassen.

Kann mir hier jemand behilflich sein?

Gruß,
rentier

Content-Key: 87386

Url: https://administrator.de/contentid/87386

Printed on: April 24, 2024 at 15:04 o'clock

Member: misterdemeanor
misterdemeanor May 11, 2008 at 14:43:25 (UTC)
Goto Top
Grüß Dich rentier,

wahrscheinlich würde ich das ganze in eine Funktion auslagern:

Public Function GetDateFromFileName(ByVal strFileName As String) As Date
  Dim d As Date
  Dim strDate As String
    If InStr(1, strFileName, "\") Then  
      strFileName = Mid(strFileName, InStrRev(strFileName, "\") + 1)  
    End If
    strDate = Left(strFileName, InStr(1, strFileName, "_") - 1)  
    d = DateSerial(Right(strDate, 2), Mid(strDate, 3, 2), Left(strDate, 2))
    GetDateFromFileName = d
End Function

Im Workbook_Open() Event dann aufrufen:

Me.Worksheets("Tabelle1").Range("A7").Value = GetDateFromFileName(Me.FullName)  

BG, Felix -misterdemeanor-
Member: Biber
Biber May 11, 2008 at 16:40:48 (UTC)
Goto Top
Moin rentner,

falls Du es mit dem mitgelieferten Excelfunktionen machen willst, dann trage in die Zeile A7 diese Formel ein:
 =TEIL(ZELLE("Dateiname");FINDEN("[";ZELLE("Dateiname"))+1;6)  

Sieht mit eingedeutschen Funktionsnamen zwar ausgesprochen deppert aus, tut es aber zu Not.
Kurzerläuterung:
  • Zelle() ist eine angebliche Kompatibilitätsfunktion, die seit Excel-Version 3.0b besser niemand anfassen soll. Die wird es auch noch 2019 geben.
  • der Parameter "Dateiname" (wirklich genau dieser Text in Anführungszeichen liefert Pfad und Dateinamen in der Form "d:\temp\[100508_blablubb.xls]Tabelle1
  • Mit FINDEN suche ich das erste "["-Zeichen und hole die nächsten 6 Zeichen mit der TEIL( text, start, len)-Funktion.

Damit hast Du bis jetzt natürlich nur die ersten 6 Zeichen "100508" dort stehen.
Wenn Du daraus ein Datum machen willst, solltest Du
  • in einem nicht störenden Feld (Z.B. AJ3) die Formel oben hinterlegen
  • und diese 6 Zeichen noch mal mit der Teil()-Funktion aufhübschen
  • oder aus den ersten 3x2-Datumsteile TTMMJJ mit der Funktion DATUM(zahl Jahr; zahl Monat; zahl tach) ein Datum erzeugen.

Grüße
Biber
Member: bastla
bastla May 11, 2008 at 17:01:38 (UTC)
Goto Top
@Biber
Sieht mit eingedeutschen Funktionsnamen zwar ausgesprochen deppert aus ...
Wie würdest Du denn dann die dynamische (bringt zwar hier ohnehin nicht wirklich etwas) Variante "Teil des Dateinamens bis unmittelbar vor dem (hoffentlich enthaltenen) ersten _" kommentieren? face-wink
=TEIL(ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname"))+1;SUCHEN("_";ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname")))-1-SUCHEN("[";ZELLE("Dateiname")))  

Grüße
bastla
Member: Biber
Biber May 11, 2008 at 23:28:45 (UTC)
Goto Top
@bastla
Du wirst lachen - meine erste angetestete Version, die gleich ein Datum aus dem Dateinamen machen sollte, fühlte sich in etwa so an:
=DATUM(2000+WERT(TEIL(TEIL(ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname"))+1;SUCHEN("_";ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname")))-1-SUCHEN("[";ZELLE("Dateiname")));5;2));WERT(TEIL(TEIL(ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname"))+1;SUCHEN("_";ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname")))-1-SUCHEN("[";ZELLE("Dateiname")));3;2));WERT(TEIL(TEIL(ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname"))+1;SUCHEN("_";ZELLE("Dateiname");SUCHEN("[";ZELLE("Dateiname")))-1-SUCHEN("[";ZELLE("Dateiname")));1;2)))  

Ich denke, das ist selbst für ausgesprochene Liebhaber von Onelinern ein bisschen neben der Spur.
Funktonieren würde es ("sinnvoller" Dateiname unterstellt), aber das sieht doch wie mit dem Kopf auf die Tastatur aufgeschlagen, oder?

Grüße
Biber
Member: rentier
rentier May 12, 2008 at 08:28:33 (UTC)
Goto Top
Hallo nochmal,

vielen Dank für Eure superschnelle Hilfe, bin jetzt erst dazu gekommen Eure Antworten zu lesen. Werd sie im laufe des Tages ausprobieren.

Gruß,
rentier