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

Feld Zeit nach csv export nicht mehr zu gebrauchen

Feld Zeit nach csv export nicht mehr zu gebrauchen
16.01.2019 09:38:13
Nilo
Moin,
ich habe eine Frage und hoffe Ihr könnt helfen.
Ich exportiere aus einem Excel in ein csv Format.
Spalte A & B habe ich Datum und Zeit.
In Excel so: 20.12.2018|06:51:02
nach Export in csv dann so: 20.12.2018|0,285439814814815|
was muss getan werden damit im csv auch die Zeit korrekt dargestellt wird?
Danke und Gruß
  • 
    Sub AufCAblegen()
    Dim A                         As Variant
    Dim B()                       As String
    Dim D()                       As String
    Dim z                         As Long
    Dim s                         As Byte
    Dim r                         As Long
    Dim C                         As Byte
    Const Path                    As String = "C:\Test\"
    Const Filename                As String = "Test"
    Const Extension               As String = ".csv"
    Const Separator               As String = "|"
    Const Wrapper                 As String = """"
    'Here you can define your own Range, too
    A = Sheets("Test").UsedRange
    If Not IsEmpty(A) Then
    z = UBound(A, 1)
    s = UBound(A, 2)
    ReDim D(z - 1)
    For r = 1 To z
    ReDim B(s - 1)
    For C = 1 To s
    If InStr(1, A(r, C), Separator) > 0 Then
    'Rows whith cells including the Separator
    'put in Wrapper
    B(C - 1) = Wrapper & A(r, C) & Wrapper
    Else
    B(C - 1) = A(r, C)
    End If
    Next C
    D(r - 1) = Join(B(), Separator)
    Next r
    Open Path & Filename & Extension For Output As #1
    Print #1, Join(D(), vbCrLf)
    Close #1
    End If
    End Sub
    


  • 2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Feld Zeit nach csv export nicht mehr zu gebrauchen
    16.01.2019 10:30:25
    Luschi
    Hallo Nilo,
    das Dilemma ist schon an dieser Stelle passiert:
    A = Sheets("Test").UsedRange
    denn Uhrzeiten sind ja Dezimalzahlen zwischen 0 und 1, und erst die Zellformatierung macht daraus eine Uhrzeit.
    Abhilfe schafft dieser Zusatzcode, wo die Deziumalzahl in einen Uhrzeit-String umgewandelt wird.
    In meiner Demodatei stehen die Uhrzeiten in der 2. Spalte (also 'B'), deshalb: If C = 2 Then
    If Not IsEmpty(A) Then
    z = UBound(A, 1)
    s = UBound(A, 2)
    ReDim D(z - 1)
    For r = 1 To z
    ReDim B(s - 1)
    For C = 1 To s
    If InStr(1, A(r, C), Separator) > 0 Then
    'Rows whith cells including the Separator
    'put in Wrapper
    B(C - 1) = Wrapper & A(r, C) & Wrapper
    Else
    If C = 2 Then
    B(C - 1) = Format(A(r, C), "hh.mm:ss")
    Else
    B(C - 1) = A(r, C)
    End If
    End If
    Next C
    D(r - 1) = Join(B(), Separator)
    Next r
    Open Path & Filename & Extension For Output As #1
    Print #1, Join(D(), vbCrLf)
    Close #1
    End If
    
    Gruß von Luschi
    aus klein-Paris
    PS: Dim s As Byte
    ist zwar gut gemeint aber nicht gut gemacht; hier organisierst Du Arbeit für den Interpreter, denn
    VarType(UBound(A, 2)) ergibt den Datentyp 3 (Long), muß aber in die Byte-Variable (s) gepreßt werden.
    In VB.Net bzw. C#, Java etc. nennt man diesen Vorgang CAST(en), und das kostet Rechenzeit, besonders wenn es in Schleifen passiert.
    Anzeige
    AW: Danke! gibts auch einen Trick für das Datum ?
    16.01.2019 14:36:20
    Nilo
    Moin Luschi,
    vielen Dank, soweit reicht mein Brain leider nicht :)
    Jetzt stelle ich fest das ich mit dem Datum ein ebenso blödes mapping problem habe.
    Folgendes passiert bevor ich genannten code für den csv export anwende:
    Ich importiere einen csv,
    reicher ihn mit Daten an
    und werfe ihn mit genanntem code wieder aus!
    Ok, im importieren csv gibt es ein Datumsfeld (Spalte A) im englischen Format "yyyy-MM-dd" sobald dieses in Excel landet wird daraus leider völlig von selbst ein deutsches format "dd.MM.yyyy".
    Jetzt biege ich es wieder um in "yyyy-MM-dd" aber im exportierten csv kommt leider nur "dd.MM.yyyy" an!
    Wie kann ich das in den Griff bekommen?
    Danke und Gruß
    Nilo
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige