Zum Inhalt springen

CSV-Export - Probleme | bitte um Hilfe!


Matthias
 Teilen

Empfohlene Beiträge

Habe folgende Frage an die Computerspezialisten:

Möchte aus einer Excel-Tabelle einen CSV-Export machen (damit ich die Daten anderweitig einlesen kann) und die Datenstruktur muß folgendermaßen ausschauen:

Texttrenner: ;. Klar, bei CSV ist immer ;

Text aus den Spalten muß unter Anführungszeichen stehen.

Schaut so aus: "10000";"das ist ein test";"man möge mir helfen";...

also
Art-Nummer;Beschreibung;Kurzbeschreibung
...

Soweit so gut, Excel exportiert mir die Daten zwar mit dem ";" getrennt, allerdings ohne die Anführungszeichen.:(

Und ohne diese, geht der Import in dem anderen Programm nicht. Einzeln die Anführungszeichen hinzuzufügen ist ein Ding der Unmöglichkeit, denn ich füge nicht manuell bei 16.800 Zeilen und 54 Spalten, also insgesamt 907.200 Datenfeldern " " ein, da sitze ich bis Ostern nächsten Jahres...:rolleyes:

 

Bitte um Hilfe, danke!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Als *.bas Datei abspeichern und im VB-Editor (ALT+F11) importieren. Danach findest du unter den Makros ein neues Makro und kannst so deine CSV generieren.

 

Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' mit wählbarem Trennzeichen und Maskierung von Einträgen
' von Nils Kaczenski (Vorname at nachname .de), 30.1.2003
' Ohne Gewähr!
' geändert von Martin Kaiser-Kaplaner 10.11.06
' Daten wrden unter Anführngsstriche gesetzt

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, ".xls", ".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 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
   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



 

LG

Martin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Puh, ob ich das zusammenbringe...:rolleyes::eek:

 

Wie speichere ich eine Datei als *.bas?

Ist das direkt im Excel zu finden? Ich find's net...

Oder muß ich das im Explorer umstellen, einfach hinten dran .bas schreiben?

Als *.bas Datei abspeichern und im VB-Editor (ALT+F11) importieren. Danach findest du unter den Makros ein neues Makro und kannst so deine CSV generieren.

 

Sub SaveCSV()
' Speichert den Inhalt eines Arbeitsblatts als CSV-Datei
' mit wählbarem Trennzeichen und Maskierung von Einträgen
' von Nils Kaczenski (Vorname at nachname .de), 30.1.2003
' Ohne Gewähr!
' geändert von Martin Kaiser-Kaplaner 10.11.06
' Daten wrden unter Anführngsstriche gesetzt

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, ".xls", ".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 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
   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



 

LG

Martin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe folgende Frage an die Computerspezialisten:

Möchte aus einer Excel-Tabelle einen CSV-Export machen (damit ich die Daten anderweitig einlesen kann) und die Datenstruktur muß folgendermaßen ausschauen:

Texttrenner: ;. Klar, bei CSV ist immer ;

Text aus den Spalten muß unter Anführungszeichen stehen.

Schaut so aus: "10000";"das ist ein test";"man möge mir helfen";...

also
Art-Nummer;Beschreibung;Kurzbeschreibung
...

Soweit so gut, Excel exportiert mir die Daten zwar mit dem ";" getrennt, allerdings ohne die Anführungszeichen.:(

Und ohne diese, geht der Import in dem anderen Programm nicht. Einzeln die Anführungszeichen hinzuzufügen ist ein Ding der Unmöglichkeit, denn ich füge nicht manuell bei 16.800 Zeilen und 54 Spalten, also insgesamt 907.200 Datenfeldern " " ein, da sitze ich bis Ostern nächsten Jahres...:rolleyes:

 

Bitte um Hilfe, danke!

 

Alternativvorschlag:

Du könntest schon die " " " im excel einfügen und dann erst als *.csv exportieren.

Das würde mit dann mit dem Befehl "verketten" funktionieren

( =VERKETTEN("""";A4;"""") ) A4 wäre zB die ArtNr.

Dann noch einmal kopieren und "Werte einfügen" durchführen, weil sonst exportierst du nur die Formeln :)

 

Dann klapps auch mit dem " " " im csv Export ... :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

 Teilen

×
×
  • Neu erstellen...