Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1148to1152
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
Uhrzeit Format in CSV
Ralf
Hallo Zusammen,
ich habe folgendes Problem:
Ich habe in einer Datei mit mehreren Sheets ein Tabellenblatt, das ich per VBA als CSV-Datei speichern möchte. Im Tabellenblatt habe ich in 2 Spalten Uhrzeiten z.B. 20:15 hinterlegt. Wenn ich das Tabellenblatt als CSV speichere, macht das Makro aus der Uhrzeit den entsprechenden Zahlenwert. Wenn ich das manuell mache, also das Blatt in eine neue Datei kopiere und als CSV abspeichere, funktioniert es.
Außerdem habe ich hier noch das Problem, wenn ein Formelergebnis in einer Zelle "NULL" ergibt, wird in der CSV-Datei per Makro eine "0" eingetragen, manuell, also das Blatt in eine neue Datei kopieren und als CSV abspeichern,wird hier wie ich es brauche ein "Blank" gesetzt.
Könnt ihr mir hier weiterhelfen?
Gruß Ralf
Hier der Code

Sub copy_lbase_csv()
Dim strSep As String, strDat As String, _
iCol As Byte, iRow As Integer, _
iR As Integer, iC As Byte, strTxt As String, _
strMldg As String
iRow = ActiveSheet.UsedRange.Rows.Count
iCol = ActiveSheet.UsedRange.Columns.Count
strSep = Chr(59)
DateiName:
'strDat = InputBox("Dateiname?", "DateiName", ThisWorkbook.Path & "\")
strDat = "G:\Dokumente\JITEX-I\T4F\Fahrplan Stand " & Format(Date, "DDMMYYYY") & "  _
Produktion.csv"
If strDat = "" Then Exit Sub
If InStr(strDat, ":\") = 0 Then
strDat = "G:\Dokumente\JITEX-I\T4F\Fahrplan Stand " & Format(Date, "DDMMYYYY") & "  _
Produktion.csv" & strDat
End If
If Dir(strDat)  "" Then
strMldg = MsgBox("Datei bereits vorhanden. Überschreiben?", vbYesNo)
If strMldg = vbNo Then GoTo DateiName
End If
On Error GoTo DateiFehler
Open strDat For Output As #1
For iR = 1 To iRow
strTxt = ""
For iC = 1 To iCol
strTxt = strTxt & Cells(iR, iC) & strSep
Next iC
strTxt = Left(strTxt, Len(strTxt) - 1)
Print #1, strTxt
Next iR
Close #1
MsgBox ("Die Datei " & strDat & " wurde angelegt.")
Exit Sub
DateiFehler:
MsgBox ("Fehler in Dateinamen!")
Resume DateiName
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 13:43:26
Oberschlumpf
Hi Ralf
zu Prob1
Ich habe gerade...
- eine neue Exceldatei geöffnet
- in 2 Spalten unterschiedliche Uhrzeiten (über mehrere Zeilen) eingetragen
- den Makrorecorder gestartet
- den Vorgang, Datei als csv zu speichern durchgeführt
Nun habe ich mir die neu erstellte csv-Datei mit Notepad angesehen - die Werte wurden in der Uhrzeitschreibweise gespeichert
- habe die csv-Datei wieder gelöscht
- habe nun das zuvor gespeicherte Makro gestartet; die csv-Datei wurde also per VBA erstellt
- habe mir die csv-Datei wieder in Notepad angesehen - wieder keine Änderung, Speicherung wieder in der Uhrzeitschreibweise
Kann also dein Makro einen "Fehler" enthalten?
Zeig uns doch mal deine Datei.
Ciao
Thorsten
Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 14:01:44
IngGi
Hallo Ralf,
du könntest die Zelle vorher auf Leerstring (ich denke das ist, was du mit NULL meinst) prüfen und das Ausgabeformat fest vorgeben:
      For iC = 1 To iCol
If Len(Cells(iR, iC)) = 0 Then
strTxt = strTxt & " " & strSep
Else
strTxt = strTxt & Format(Cells(iR, iC), "hh:mm") & strSep
End If
Next iC
Gruß Ingolf
AW: Uhrzeit Format in CSV
26.03.2010 14:20:51
Ralf
Hallo Ingolf,
jetzt ist schon mal die Uhrzeit richtig, aber die Leerfelder hat mir das Makro jetzt mit 00:00 statt Blank gesetzt.
Hier noch mal mein geänderter Code
Gruß Ralf
Sub copy_lbase_csv()
Dim strSep As String, strDat As String, _
iCol As Byte, iRow As Integer, _
iR As Integer, iC As Byte, strTxt As String, _
strMldg As String
iRow = ActiveSheet.UsedRange.Rows.Count
iCol = ActiveSheet.UsedRange.Columns.Count
strSep = Chr(59)
DateiName:
'strDat = InputBox("Dateiname?", "DateiName", ThisWorkbook.Path & "\")
strDat = "G:\Dokumente\JITEX-I\T4F\Fahrplan Stand " & Format(Date, "DDMMYYYY") & "  _
Produktion.csv"
If strDat = "" Then Exit Sub
If InStr(strDat, ":\") = 0 Then
strDat = "G:\Dokumente\JITEX-I\T4F\Fahrplan Stand " & Format(Date, "DDMMYYYY") & "  _
Produktion.csv" & strDat
End If
If Dir(strDat)  "" Then
strMldg = MsgBox("Datei bereits vorhanden. Überschreiben?", vbYesNo)
If strMldg = vbNo Then GoTo DateiName
End If
Call Leerzeilenlöschen
On Error GoTo DateiFehler
Open strDat For Output As #1
For iR = 1 To iRow
strTxt = ""
For iC = 1 To iCol
If Len(Cells(iR, iC)) = 0 Then
strTxt = strTxt & " " & strSep
Else
strTxt = strTxt & Format(Cells(iR, iC), "hh:mm") & strSep
End If
Next iC
'For iC = 1 To iCol
'  strTxt = strTxt & Cells(iR, iC) & strSep
'Next iC
strTxt = Left(strTxt, Len(strTxt) - 1)
Print #1, strTxt
Next iR
Close #1
MsgBox ("Die Datei " & strDat & " wurde angelegt.")
Exit Sub
DateiFehler:
MsgBox ("Fehler in Dateinamen!")
Resume DateiName
End Sub

Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 14:30:45
IngGi
Hallo Ralf,
dann meinst du mit NULL offensichtlich keinen Leerstring. Zweiter Rateversuch: Vielleicht meinst du ja ganz einfach den Wert 0. Dann so:
         If Cells(iR, iC) = 0 Then
strTxt = strTxt & " " & strSep
Else
strTxt = strTxt & Format(Cells(iR, iC), "hh:mm") & strSep
End If
Wenn nicht, dann gib doch mal ein Beispiel für eine Formel, die NULL ergibt. Vielleicht sieht man ja daraus, was mit NULL gemeint ist.
Gruß Ingolf
AW: Uhrzeit Format in CSV
26.03.2010 14:50:31
Ralf
Hallo Ingolf,
die Änderung funktioniert leider gar nicht. Hier meine Wenn-Formel die Null ergibt.
In der Zelle IB3 steht aber nichts drin --> Null
Gruß Ralf
=WENN('I-Fahrplan'!$FC3="nein";"";'I-Fahrplan'!IB3)


Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 15:08:47
IngGi
Hallo Ralf,
das kann ich nun nicht mehr nachvollziehen. Ein Bezug auf eine leere Zelle ergibt eindeutig den Wert 0. Dieser müsste dann entsprechend meinem zweiten Versuch abgefragt werden können. Versuchen wir es nochmal mit einer anderen Möglichkeit:
              For iC = 1 To iCol
strTxt = strTxt & Replace(Format(Cells(iR, iC), "hh:mm"), _
"00:00", "0") & strSep
Next iC
Gruß Ingolf
AW: Uhrzeit Format in CSV
26.03.2010 15:22:38
Ralf
Hallo Ingolf,
die Uhrzeit ist ok, aber die Wenn-Formeln sind "0" statt ""
Gruß Ralf
AW: Uhrzeit Format in CSV
26.03.2010 15:30:53
IngGi
Hallo Ralf,
es muss natürlich so heißen:
              For iC = 1 To iCol
strTxt = strTxt & Replace(Format(Cells(iR, iC), "hh:mm"), _
"00:00", "") & strSep
Next iC
oder alternativ so:
              For iC = 1 To iCol
strTxt = strTxt & Replace(Format(Cells(iR, iC), "hh:mm"), _
"0", "") & strSep
Next iC
Gruß Ingolf
Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 15:38:34
Ralf
Hallo Ingolf,
das hatte ich auch gedacht und schon probiert. Wenn man "" statt "0" macht kommt die Fehlermeldung
"Fehler im Dateinamen"
Guß Ralf
AW: Uhrzeit Format in CSV
26.03.2010 15:43:27
Ralf
Hallo Ingolf,
danke jetzt funzts :D
Schönes Wochenende
Gruß Ralf
AW: Uhrzeit Format in CSV
26.03.2010 15:45:52
Ralf
Ups das war zu schnell auf absenden gedrückt.
Die Meldung mit "Fehler im Dateinamen" kam weil ich Dussel die CSV-Datei vom vorhergehenden Test noch offen hatte...
AW: Uhrzeit Format in CSV
26.03.2010 14:06:59
Ralf
Hallo Thorsten,
habe die Datei in abgespeckter Version hochgeladen. In der Datei sind jetzt keine Formeln mehr nur noch Werte. die Probleme sind aber die gleichen.
https://www.herber.de/bbs/user/68818.xls
Gruß Ralf
Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 14:36:48
Oberschlumpf
Hi Ralf
Und wenn du deine For/Next-Schleife mal gegen meine tauschst?

For iC = 1 To iCol
If IsDate(Cells(iR, iC).Text) And InStr(Cells(iR, iC).Text, ":") > 0 Then
strTxt = strTxt & Format(Cells(iR, iC), "hh:mm") & strSep
Else
strTxt = strTxt & Cells(iR, iC) & strSep
End If
Next iC

Hab, glaube ich, jetzt ein wenig den Überblick verloren.
Aber wenn ich die Inhalte deiner Bsp-Datei mit den Inhalten meiner erstellten csv-Datei (dein Code mit meiner Änderung) vergleiche, sehe ich nun in der csv-Datei die Uhrzeiten in der gewünschten Schreibweise, und auch die Spalten O+P sind - wie in deiner Bsp-Datei - leer.
Hilfts`?
Ciao
Thorsten
Anzeige
AW: Uhrzeit Format in CSV
26.03.2010 14:59:02
Ralf
Hallo Thorsten,
die Uhrzeit funktioniert jetzt damit :)
Die Spalten O + P sind jetzt ok.
Ich habe aber noch andere Spalten wo das auch zutriftt (Hatte Die Datei ja abgespeckt. Wie kriege ich das hin? Z.B. Spalte i oder J
Gruß Ralf

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige