Thema Datum  Von Nutzer Rating
Antwort
02.08.2021 11:06:18 Mathias
NotSolved
Blau CSV Export mit Spez. Datumsformat
02.08.2021 22:00:28 xlKing
**
Solved
03.08.2021 07:03:03 Mathias Thees
NotSolved
03.08.2021 07:03:09 Mathias Thees
Solved
03.08.2021 18:46:46 Mathias Thees
NotSolved
03.08.2021 22:32:07 xlKing
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
02.08.2021 22:00:28
Views:
229
Rating: Antwort:
 Nein
Thema:
CSV Export mit Spez. Datumsformat

Hallo Mathias,

das grenzt schon fast an Auftragsprogrammierung. Da der Code dafür aber ziemlich schnell geschrieben ist, hab ich dir hier mal ein Beispiel erstellt.

Anhand deiner Beschreibung gehe ich davon aus, dass deine Eingabetabelle wie folgt aufgebaut ist (Die Lastwerte sind dabei Phantasie):

  A B C D E
1   0:00 0:15 0:30 0.45
2 01.01.2021 4500 4600 4700 4800
3 02.01.2021 4501 4601 4701 4801

Frage: Was machst du bei Beginn der Winterzeit? Da gibts die Stunde von 2:00 bis 3:00 doppelt. Es könnten dabei unterschiedliche Leistungsspitzen anfallen. In meinem Code verwende ich die eingegebenen Leistungsspitzen dann für die CSV ebenfalls doppelt. Das macht die Sache einfacher.

Hier der Code für Modul1. Das Tabellenblatt "Tabelle1" musst du natürlich an deinen Blattnamen anpassen.

Sub ExportCSV()

  Dim Blatt As Worksheet, Jahr As Long, BeginnSZ As Date, BeginnWZ As Date, sz As Boolean
  Dim Pfad As String, Zeitstrng As String, Datum As Date, Zeit As Date, p As Boolean
    
  Set Blatt = Sheets("Tabelle1")
  Pfad = ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".")) & "csv"
  
  lzei = Cells(Rows.Count, 1).End(xlUp).Row
  
  Open Pfad For Output As #1
    For z = 2 To lzei
      Datum = Blatt.Cells(z, 1)
      Jahr = Year(Datum)
      BeginnSZ = DateSerial(Jahr, 3, 31) - Weekday(DateSerial(Jahr, 3, 31)) + 1
      BeginnWZ = DateSerial(Jahr, 10, 31) - Weekday(DateSerial(Jahr, 10, 31)) + 1
      For s = 2 To 97
       'If (Datum = BeginnSZ And s = 10) Or (Datum = BeginnWZ And s = 14) Then Stop
       Zeit = Blatt.Cells(1, s)
       If Datum = BeginnSZ And CStr(Zeit) = "02:00:00" Then
         s = s + 4
         Zeit = Blatt.Cells(1, s)
       ElseIf Datum = BeginnWZ And CStr(Zeit) = "03:00:00" And p = False Then
         s = s - 4
         Zeit = Blatt.Cells(1, s)
         p = True
       End If
       If Datum + Zeit >= BeginnSZ + TimeValue("03:00:00") And Datum + Zeit < BeginnWZ + TimeValue("03:00:00") And p = False Then sz = True Else sz = False
       Print #1, Format(Datum + Zeit, "yyyy-mm-dd hh:nn:ss") & IIf(sz, "+02:00", "+01:00"), Cells(z, s)
      Next s
    Next z
  Close #1
  
  MsgBox "Die Datei " & Pfad & " wurde erzeugt."
  
End Sub

Im Beispiel wird eine Tabstopp-getrennte CSV-Datei erstellt. Wenn du lieber eine CSV mit Trennzeichen haben möchtest, ersetze die Print-Zeile wie folgt: Print #1, Format(Datum + Zeit, "yyyy-mm-dd hh:nn:ss") & IIf(sz, "+02:00", "+01:00") & ";" & Cells(z, s)

Die CSV befindet sich im gleichen Pfad und trägt den gleichen Namen wie die Excel-Datei.

Falls du weitere Fragen hast, kannst du dich gern melden.

Gruß Mr. K.


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
02.08.2021 11:06:18 Mathias
NotSolved
Blau CSV Export mit Spez. Datumsformat
02.08.2021 22:00:28 xlKing
**
Solved
03.08.2021 07:03:03 Mathias Thees
NotSolved
03.08.2021 07:03:09 Mathias Thees
Solved
03.08.2021 18:46:46 Mathias Thees
NotSolved
03.08.2021 22:32:07 xlKing
NotSolved