Matthias Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 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... Bitte um Hilfe, danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GrazerTourer Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Matthias Geschrieben 10. November 2006 Autor Teilen Geschrieben 10. November 2006 Puh, ob ich das zusammenbringe... 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fetzpetz Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 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... 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 ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Peter Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 ...oder Du lädst die "falsche" CSV in eine Textverarbeitung und läßt automatisch ; durch ";" und dann den Zeilentrenner ^v durch "^v" ersetzen. Geht sicher ruckzuck. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Matthias Geschrieben 10. November 2006 Autor Teilen Geschrieben 10. November 2006 Thx einmal, hat mit den Kundendaten funktioniert. Allerdings, die große Liste, aus der ich einmal einen Auszug mit rund 300 Artikeln erstellt habe - ich habe mir schon gedacht, die Software dablost's vielleicht net - ist noch immer ein Problem > funkt net... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
GrazerTourer Geschrieben 10. November 2006 Teilen Geschrieben 10. November 2006 Sicher mußes das "dablasen".... Sind da irgendwelche komischen zeichen drinnen? In dem Makro ist eine Abfrage für dein Trennziechen drin. Das heißt, wenn in deinen Artikeln ; vorkommen, dann gibt problemchen... das kann man aber ändern Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.