Thema Datum  Von Nutzer Rating
Antwort
16.05.2014 16:59:32 Stefan
NotSolved
Blau CSV Dateien öffnen und je nach Dateinamen einfügen
16.05.2014 18:29:45 Gast93640
NotSolved
16.05.2014 18:45:23 Gast13524
NotSolved
20.05.2014 10:42:04 Stefan
NotSolved
20.05.2014 13:11:24 Gast68645
NotSolved

Ansicht des Beitrags:
Von:
Gast93640
Datum:
16.05.2014 18:29:45
Views:
1445
Rating: Antwort:
  Ja
Thema:
CSV Dateien öffnen und je nach Dateinamen einfügen

Die Reihenfloge scheint mir Abhängig vom Datum und vom zweiten Z-Wert im Dateinamen zu sein. Darum sollte das erste Anliegen darin bestehen diese Informationen herauszufiltern und falls erforderlich in die richtige Reihenfolge zu bringen. Erst dann ist an einen strukturierten Datenimport überhaupt zu erst zu denken.

Option Explicit

Private Type TUDFileInfo
  Idx1 As Integer
  Idx2 As Integer
  Date As Date
  Name As String
  Path As String
  Extension As String
End Type

Public Sub Test()
  
  Const C_FOLDER As String = "X:\Verzeichnis\Unterverzeichnis\"
  
  Dim strFile As String
  Dim udfi As TUDFileInfo
  
  strFile = Dir$(C_FOLDER & "\*.csv")
  Do Until strFile = ""
    If GetUDFileInfo(C_FOLDER & "\" & strFile, udfi) Then
      'Ausgabe im VBA-Direktfenster (ggf. einblenden mit STRG+G)
      Debug.Print udfi.Name, udfi.Idx1, udfi.Idx2, Format$(udfi.Date, "yyyy-mm-dd")
    End If
    strFile = Dir$()
  Loop
  
End Sub

Private Function GetUDFileInfo(Filename As String, ByRef UDFileInfo As TUDFileInfo) As Boolean
  With UDFileInfo
    'ggf. Dateiname und Dateipfad voneinander trennen
    If InStrRev(Filename, "\") > 0 Then
      .Path = Trim$(Left$(Filename, InStrRev(Filename, "\")))
      .Name = Mid$(Filename, Len(.Path) + 1, Len(Filename) - Len(.Path))
    Else
      .Path = ""
      .Name = Trim$(Filename)
    End If
    'ggf. (am weitesten rechts stehende) Dateiendung entfernen
    If InStrRev(.Name, ".") > 0 Then .Name = Left$(.Name, InStrRev(.Name, ".") - 1)
    'prüfen ob der Dateiname den erwartenden Kriterien entspricht
    If Not .Name Like "Z##_Z##_D######" Then Exit Function
    'Informationen sammeln
    .Idx1 = Mid(.Name, 2, 2)
    .Idx2 = Mid(.Name, 6, 2)
    .Date = DateSerial(Year:=Mid(.Name, Len(.Name) - 5, 2), _
                       Month:=Mid(.Name, Len(.Name) - 3, 2), _
                       Day:=Right(.Name, 2))
  End With
  GetUDFileInfo = True
End Function

Ausgabe könnte dann so aussehen:

Z01_Z10_D140515              1             10           2014-05-15
Z01_Z10_D140516              1             10           2014-05-16
Z11_Z20_D140515              11            20           2014-05-15
Z11_Z20_D140516              11            20           2014-05-16


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
16.05.2014 16:59:32 Stefan
NotSolved
Blau CSV Dateien öffnen und je nach Dateinamen einfügen
16.05.2014 18:29:45 Gast93640
NotSolved
16.05.2014 18:45:23 Gast13524
NotSolved
20.05.2014 10:42:04 Stefan
NotSolved
20.05.2014 13:11:24 Gast68645
NotSolved