Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ExcelCSV-Export

Forumthread: ExcelCSV-Export

ExcelCSV-Export
07.03.2021 10:03:19
wethlo
Guten Morgen!
Ich habe folgende Excel-Datei erstellt:
https://www.herber.de/bbs/user/144534.xlsm
Diese enthält ein VBA-Makro, welches ich im Internet gefunden habe (siehe Zitat...):
Das Makro bewirkt, dass das Tabellenblatt in eine CSV exportiert wird, welche ich als Import-Datei für eine andere Software benötige. Soweit so gut.
Meine Wünsche wären nun folgende:
- Die beiden Abfragen nach Speicherort und Trennzeichen sollten nicht aufpoppen. Die Einstellungen der beiden Fenster passen so. Nur das dritte Fenster, dass die Datei erfolgreich exportiert wurde sollte erscheinen.
- Da in dem Tabellenblatt zwar leere Zeilen sind, die aber doch nicht leer sind (300 Stück) werden mir die nicht befüllten Zeilen mit Semikolons in die CSV geschrieben (;;;;;;;;;;;;;;;). Diese sind für die Software, in die die CSV-Datei importiert wird, sehr unvorteilhaft. Heißt also, dass das Makro diese noch löschen sollte.
Meine Excel-Kenntnisse sind einigermaßen gut, meine VBA-Kenntnisse dagegen komplett bescheiden.
Über Hilfe würde ich mich sehr freuen :-)
Hier noch das VBA-Makro:

Sub TEST()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xlsm", ".csv")
strDateiname = InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", "CSV-Export",  _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If Zelle.Value = 0 Then
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Else
If InStr(1, Zelle.Value, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Value) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Value) & strTrennzeichen
End If
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ExcelCSV-Export
07.03.2021 10:34:14
Sigi.21
Hallo,
leere Zeilen in einer Tabelle sind suboptimal. Aber dennoch: Teste mal:
Sub CSV_DateiSchreiben()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
strMappenpfad = ActiveWorkbook.FullName
'strMappenpfad = Replace(strMappenpfad, ".xlsx", ".csv")
strMappenpfad = Replace(strMappenpfad, ".xlsm", ".csv")
strDateiname = strMappenpfad        'InputBox("Wie soll die CSV-Datei heißen (inkl. Pfad)?", " _
CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = ";"               'InputBox("Welches Trennzeichen soll verwendet werden?", " _
CSV-Export", ";")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If Zelle.Value = 0 Then
If InStr(1, Zelle.Text, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Else
If InStr(1, Zelle.Value, strTrennzeichen) > 0 Then
'Zellen, die ein Trennzeichen beinhalten in Anführungsstriche setzen
strTemp = strTemp & """" & CStr(Zelle.Value) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Value) & strTrennzeichen
End If
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
If Len(strTemp) = (Bereich.Columns.Count - 1) Then
'nicht print
Else
Print #1, strTemp
End If
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Gruß
Sigi

Anzeige
AW: ExcelCSV-Export
07.03.2021 12:09:17
wethlo
Perfekt, funktioniert genau so wie es sein soll :-)

AW: ExcelCSV-Export
13.03.2021 11:06:47
wethlo
Wollte nochmals etwas nachfragen zu dem Makro:
Funktioniert alles soweit wie in meinem Beitrag schon geschrieben perfekt. Würde das allerdings nochmals gerne optimieren. Kurz zur Erklärung: Von meiner CAD-Software werden die Daten automatisch in das Tabellenblatt zwei geschrieben. Das Tabellenblatt 1 wird ja dann in eine CSV-Datei exportiert was auch einwandfrei funktioniert.
Gibt es die Möglichkeit, dass dieses Makro automatisch beim Speichern der Datei ausgeführt wird, damit die CSV-Datei dann gleich automatisch geschrieben wird ohne manuell das Makro ausführen zu müssen?

Anzeige
AW: ExcelCSV-Export
13.03.2021 11:35:13
wethlo
Wollte nochmals etwas nachfragen zu dem Makro:
Funktioniert alles soweit wie in meinem Beitrag schon geschrieben perfekt. Würde das allerdings nochmals gerne optimieren. Kurz zur Erklärung: Von meiner CAD-Software werden die Daten automatisch in das Tabellenblatt zwei geschrieben. Das Tabellenblatt 1 wird ja dann in eine CSV-Datei exportiert was auch einwandfrei funktioniert.
Gibt es die Möglichkeit, dass dieses Makro automatisch beim Speichern der Datei ausgeführt wird, damit die CSV-Datei dann gleich automatisch geschrieben wird ohne manuell das Makro ausführen zu müssen?
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige