Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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

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


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?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige