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

CSV Format speicher, trotzdem getrennte Zellen

CSV Format speicher, trotzdem getrennte Zellen
24.08.2008 22:11:07
Marc
Hallo liebe Excelfreunde,
ich habe ein etwas ungewöhnliches Problem. Ich habe einen Beleg, aus dem ich per VBA einen CSV Beleg erstellen lasse. Neben einigen Umformatierungen lasse ich die Datei dann auch mit der folgenden Codezeile
ActiveSheet.SaveAs Filename:="C:\Name".csv" , FileFormat:=xlCSVWindows
in eine CSV Datei umwandeln und so speichern. Mein Problem dabei ist, dass Excel die Daten, wie der Name des Formats schon sagt, Comma Separated Values File, nur noch durch Kommata trennt und die Trennung in Zellen aufhebt. Diese Trennung soll aber erhalten bleiben. Denn die so erzeugte Datei wird durch ein Schnittstellenprogramm in ein automatisches System eingelesen. Und dieses System benötigt einerseits eine CSV Datei und andererseits trotzdem die Trennung in Zellen. Dahingehend gibt es also leider keine Diskussion.
Wenn ich die Datei von Hand erstelle und sie von Hand als eine CSV Datei abspeichere, dann bleibt auch die Trennung in Zellen erhalten. Wie kann ich VBA dazu bringen das gleiche zu tun? Ihr würdet mir unheimlich helfen, wenn ihr mir diese Frage beantworten könnt.
Ich danke euch bereits im Voraus vielmals für die Gedanken und die Mühe, die ihr euch macht!
Herzliche Grüße,
Marc

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Format speicher, trotzdem getrennte Zellen
24.08.2008 22:36:00
Daniel
Hi
eine CSV-Datei hat keine Aufteilung in Zellen, egal was du machst. die Kennzeichnung für die Zellentrennung ist, wie der Name CSV schon sagt, das KOMMA (in deutschen CSV-Dateien allerdings öfters auch das Semikolon)
der eindruck, daß die Zellteilung mal bestehen bleibt und mal aufgehoben wird, kommt dadurch, daß excel versucht, beim Öffenen der CSV-Datei diese automatisch in Zellen aufzuteilen. bei bestimmten Trennzeichen (Semikolon) funktioniert das, bei anderen (Komma) eben nicht, aber das liegt nicht an der CSV-Datei, sondern an der Import-Routine von Excel.
wenn du gewissheit haben willst, was du tatsächlich abgespeichert hast, dann öffnest du die CSV-Datei mit dem Windows-Editor (oder einem vergleichbaren Programm). Nur dort siehst du die CSV-Daten auch so, wie sie tatsächlich vorliegen.
Entscheidend ist also, welches Trennzeichen in der CSV-Datei verwendet wird, Komma oder Semikolon.
das wird über die Eigenschaft "Local:=True / False" gesteuert.
bei "Local:=True" wird das deutsche Semikolon verwendet, ansonsten das internationale Komma.
dein Befehl zum Speichern müsste also so lauten:

ActiveWorkbook.SaveAs ""C:\Name", FileFormat:=xlCSVWindows, local:=True


(die Dateiendung ".csv" kannst du beim Speichern weglassen, die wird automatsich ergänzt)
Gruß, Daniel

Anzeige
AW: CSV Format speicher, trotzdem getrennte Zellen
24.08.2008 22:49:08
Marc
Hallo Daniel,
vielen Dank schonmal für Deine Antwort. Das ist schon eine sehr hilfreiche Antwort!!! Nur seltsamerweise ist es egal was ich eingebe, ob local:=True oder local:=False. Als Trennzeichen erscheint in beiden Fällen das Komma. Gibt es einen anderen Trick, mit dem ich Excel zum Semikolon überreden kann?
Grüße,
Marc
Mit sanfter Gewalt! ;)
24.08.2008 23:04:00
Backowe
Hi Marc,
VBA-Code:
Sub export_CSV()
Dim fileSaveName As Variant
Dim Trennzeichen As String, Text As String
Dim ZeileMax As Long, SpalteMax As Long, _
  Zeile As Long, Spalte As Long
Close #1
'fileSaveName = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv", Title:="Als CSV beliebiges Trennzeichen separiert speichern")
fileSaveName = "C:\Test.csv"
If fileSaveName <> False Then
  Open fileSaveName For Output As #1
  Trennzeichen = ";"
  ZeileMax = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
  SpalteMax = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1
  For Zeile = 1 To ZeileMax
    Text = ""
      For Spalte = 1 To SpalteMax
        Text = Text & ActiveSheet.Cells(Zeile, Spalte).Value & Trennzeichen
      Next Spalte
    Print #1, Text
  Next Zeile
Close #1
End If
End Sub
Gruß Jürgen
AW: Mit sanfter Gewalt! ;)
Marc

Hallo Jürgen,
vielen Dank für Deinen Code. Ehrlich gesagt verstehe ich ihn noch nicht so ganz... Aber es scheint mir, als ob der Code die Datei zwar aufgreift und sie mit der Dateiendung .csv versieht, sie aber trotzdem immer noch im xls Format abspeichert. Oder bin ich da jetzt auf dem Holzweg? Vielleicht habe ich ja den Code auch falsch eingebaut?! Ich bin zwar dabei mich mit Programmierung zu beschäftigen. Aber wie schon angegeben bin ich bei VBA immer noch bescheiden. Kannst Du mir vielleicht ein paar Erläuterungen dazu geben?
@ Daniel, ich habe nachgesehen. Wenn ich mich nicht irre oder ich an der falschen Stelle nachgesehen habe müsste die lokale Einstellung auf Deutschland stehen. Aber wer weiß schon, was MS Produkte hin und wieder machen... Ich danke Dir trotzdem sehr für Deine Hilfe. Mein Hintergrundwissen hat sich auf jeden Fall erweitert!
Grüße,
Marc
Der Code macht folgendes!
Backowe

Hi Marc,
als erstes wird in dem aktuellen Tabellenblatt die Zeilen- und Spaltenanzahl festgelegt, dann durch läuft der Code Zeile für Zeile und es wird jede Zelle in der Zeile als Zelle, Trennzeichen, Zelle usw. als Variable belegt, ist die komplette Zeile durchlaufen, wird die Variable Zeile für Zeile in die vorher festgelegte Textdatei geschrieben.
Gruß Jürgen
AW: CSV Format speicher, trotzdem getrennte Zellen
Daniel

Hi
nein.
bei mir überredet das Setzen des Parameters "Local:=True" Excel dazu, das Semikolon zu verwenden.
kommt vielleicht auch darauf an, was du grad für ne Ländereinstellung hast, ist die bei dir auf "Deutschland" eingestellt
ein letzter Workaround wäre natürlich, pro Zeile die ganzen Zellen in eine zusammenzufassen und dabei das Semikolon als Trennzeichen zu verwenden, beispielsweise in Spalte A eine neue Zeile einfügen mit dieser Formel:

=A1&";"&B1&";"&C1&";"&D1


dann in dieser Zeile Formeln durch Werte ersetzen, die alten Spalten löschen und dieses Blatt als CSV-Datei speichern. (wenn die originaldaten nicht gelöscht werden sollen, dann kann man diese Formel ja in einem anderen Blatt einfügen oder sich ein kleines Makro schreiben)
da jetzt für Excel die Datei nur eine Spalte hat, wird kein Spaltentrennzeichen eingefügt.
allerdings haben wir ja die Semikolons schon in den Text eingefügt und für die einlesende Anwendung ist es egal, ob die Semikolons aus dem Text kommen oder von Excel als Spaltentrennzeichen eingefügt werden, das ist nachträglich nicht mehr zu differnzieren.
Gruß, Daniel

Anzeige
AW: Mit sanfter Gewalt! ;)
24.08.2008 23:35:43
Marc
Hallo Jürgen,
vielen Dank für Deinen Code. Ehrlich gesagt verstehe ich ihn noch nicht so ganz... Aber es scheint mir, als ob der Code die Datei zwar aufgreift und sie mit der Dateiendung .csv versieht, sie aber trotzdem immer noch im xls Format abspeichert. Oder bin ich da jetzt auf dem Holzweg? Vielleicht habe ich ja den Code auch falsch eingebaut?! Ich bin zwar dabei mich mit Programmierung zu beschäftigen. Aber wie schon angegeben bin ich bei VBA immer noch bescheiden. Kannst Du mir vielleicht ein paar Erläuterungen dazu geben?
@ Daniel, ich habe nachgesehen. Wenn ich mich nicht irre oder ich an der falschen Stelle nachgesehen habe müsste die lokale Einstellung auf Deutschland stehen. Aber wer weiß schon, was MS Produkte hin und wieder machen... Ich danke Dir trotzdem sehr für Deine Hilfe. Mein Hintergrundwissen hat sich auf jeden Fall erweitert!
Grüße,
Marc
Anzeige
Der Code macht folgendes!
25.08.2008 09:24:28
Backowe
Hi Marc,
als erstes wird in dem aktuellen Tabellenblatt die Zeilen- und Spaltenanzahl festgelegt, dann durch läuft der Code Zeile für Zeile und es wird jede Zelle in der Zeile als Zelle, Trennzeichen, Zelle usw. als Variable belegt, ist die komplette Zeile durchlaufen, wird die Variable Zeile für Zeile in die vorher festgelegte Textdatei geschrieben.
Gruß Jürgen
AW: CSV Format speicher, trotzdem getrennte Zellen
24.08.2008 23:07:00
Daniel
Hi
nein.
bei mir überredet das Setzen des Parameters "Local:=True" Excel dazu, das Semikolon zu verwenden.
kommt vielleicht auch darauf an, was du grad für ne Ländereinstellung hast, ist die bei dir auf "Deutschland" eingestellt
ein letzter Workaround wäre natürlich, pro Zeile die ganzen Zellen in eine zusammenzufassen und dabei das Semikolon als Trennzeichen zu verwenden, beispielsweise in Spalte A eine neue Zeile einfügen mit dieser Formel:

=A1&";"&B1&";"&C1&";"&D1


dann in dieser Zeile Formeln durch Werte ersetzen, die alten Spalten löschen und dieses Blatt als CSV-Datei speichern. (wenn die originaldaten nicht gelöscht werden sollen, dann kann man diese Formel ja in einem anderen Blatt einfügen oder sich ein kleines Makro schreiben)
da jetzt für Excel die Datei nur eine Spalte hat, wird kein Spaltentrennzeichen eingefügt.
allerdings haben wir ja die Semikolons schon in den Text eingefügt und für die einlesende Anwendung ist es egal, ob die Semikolons aus dem Text kommen oder von Excel als Spaltentrennzeichen eingefügt werden, das ist nachträglich nicht mehr zu differnzieren.
Gruß, Daniel

Anzeige

152 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige