Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Speichern einer CSV-Dat. mit Semikolon als Trennz.

Speichern einer CSV-Dat. mit Semikolon als Trennz.
29.07.2007 16:35:00
Kasimir
Hallo Leute,
ich benötige mal Eure Hilfe. Es geht um das Problem, dass eine CSV-Datei gespeichert werden soll und dass beim Speichern als Trennzeichen nicht das Semikolon, sondern das Komma verwendet wird, wenn der Speichervorgang durch ein Makro ausgelöst wird. Dazu habe ich folgendes Makro gefunden, was soweit auch funktioniert.

Sub AlsTextSpeichern()
exportfile = "C:\Test.csv"
Dateinummer = FreeFile
Set TB = ThisWorkbook.Worksheets(1)
Open exportfile For Output As #Dateinummer
For z = 1 To TB.UsedRange.Rows.Count
For s = 1 To TB.UsedRange.Columns.Count
TMP = TMP & CStr(TB.Cells(z, s).Text) & ";"
Next s
TMP = Left(TMP, Len(TMP) - 1)
Print #Dateinummer, TMP
TMP = ""
Next z
Close #Dateinummer
End Sub


Dieses Makro exportiert die Daten aus dem 1. Tabellenblatt in die Test.csv. Nun ist aber mein Problem, dass meine CSV-Datei, in die gespeichert werden soll, offen ist. Ich ändere Daten direkt in der geöffneten CSV-Datei aus einer UserForm. Zum Schluss möchte ich die geöffnete CSV-Datei Daten getrennt durch das Semikolon speichern.
Weiß jemand, wie ich das anstelle, denn bei obigem Makro muss die CSV-Datei ja geschlossen sein?
Danke Euch für die Hilfe,
Kasimir

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern einer CSV-Dat. mit Semikolon als Tre
29.07.2007 18:17:06
Ramses
Hallo
"...Ich ändere Daten direkt in der geöffneten CSV-Datei aus einer UserForm..."
Hast du eine zweite Mappe offen ?
Ausserdem ist das egal:
Workbooks("Deine.CSV").Save local:=true
sollte reichen, denn dann wird die Datei mit Semikolon gespeichert
Gruss Rainer

Noch ein anderes Problem
29.07.2007 18:30:00
Kasimir
Hallo Rainer,
danke Dir für Deine Antwort. Ich werde Deinen Vorschlag testen. Er wird aber sicherlich funktionieren, so wie ich Deine Lösungen kenne.
Allerdings tut sich nun ein etwas für mich größeres Problem auf. Nur mal kurz zur Erklärung. Ich will Autodaten, die ich in Excel bereits aufgeführt habe mit Excel ändern und speichern. Diese CSV-Datei hat ein bestimmtes Format. Wie das Format der Spalten sein soll, gibt mir mobile.de vor, deren Schnittestelle in einer PDF-Datei beschrieben ist.
Nun müssen Daten, die als Text deklariert sind, in Anführungszeichen gesetzt werden, damit Mobile erkennt, dass es sich um einen Textwert handelt. Also z.B. muss das Automodell VW in der CSV-Datei als “VW“ erscheinen. Ich habe die Spalten entsprechend der Vorgabe von der Schnittstellenbeschreibung von mobile.de als Zahl oder Text formatiert. Wenn ich nun daraus eine CSV-Datei erzeuge, werden die Textdaten aber nicht in Anführungszeichen gesetzt.
Wie stelle ich das an? Bei Bedarf kann ich auch die Schnittstellenbeschreibung per Mail zukommen lassen.
Ich hoffe, Du oder auch jemand anderes hat da eine Idee. Muss eventuell nur etwas eingestellt werden, damit die Daten aus den Spalten, die als Text formatiert sind, in Anführungszeichen gesetzt werden, damit diese als text erkannt werden?
Danke Euch,
Kasimir

Anzeige
AW: Noch ein anderes Problem
29.07.2007 18:38:48
Ramses
Hallo
dann setz doch einfach ein Anführungszeichen am Anfang und am Ende wenn du die Daten von der userform in die Tabelle zurückschreibst.
Das ist beim ersten Mal vielleicht etwas aufwändig, aber dann hast du das ganze so wie du es brauchst
Gruss Rainer

AW: Noch ein anderes Problem
29.07.2007 18:52:00
Kasimir
Hallo Rainer,
danke Dir für Deine Antwort. Dein Speicherbefehl habe ich nun mal getestet. leider funktioniert er nicht. Wenn ich den Befehl entweder in der CSV-Datei oder aus einer anderen Datei starte, erscheint ein Kompilierungsfehler "Falsche Anzahl an Argumenten...." und es wird ".save" markiert.
Dann habe ich mal Deinen Vorschlag mit den Anführungszeichen getestet. Ich habe, diesmal nicht aus der UserForm, sondern direkt in eine Zelle eingetragen, den Wert mal in Anführungszeichen gesetzt. Es steht also in der Zelle "018190". Wenn ich nun die Datei händisch als CSV-Datei speichere, erscheinen vor dem Wert 3 Anführungszeichen und dahinter. Es steht dann also """018190""" in der CSV-Datei.
Mache ich jetzt irgendetwas verkehrt oder habe ich Deinen Vorschlag falsch verstanden?
Danke Dir für eine erneute antwort,
Kasimir

Anzeige
AW: Noch ein anderes Problem
29.07.2007 19:51:00
Ramses
Hallo
Sorry, mein Fehler.
"Local = True" geht nur mit dem SaveAs Befehl
Probier mal

Sub Makro2()
'Die CSV ist die active Mappe
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Name, FileFormat:=xlCSV, local:=True
'oder
Dim savePath As String
savePath = Workbooks("Deine.csv").Path
'Existierende Datei ohne Nachfrage überschreiben
Application.DisplayAlerts = False
With Workbooks("Deine.csv")
.SaveAs Filename:="Deine.csv", FileFormat:=xlCSV, local:=True
.Close
End With
Application.DisplayAlerts = True
End Sub


Gruss Rainer

Anzeige
Nun nur noch das Problem mit den Anführungszeichen
29.07.2007 20:02:42
Kasimir
Hallo Reiner,
das mit dem Speichern funktioniert. Danke Dir dafür.
Hast Du nun auch noch eine Idee, wie ich das mit den Anführungszeichen erreichen kann, also dass nicht in der CSV-Datei 3 vor und 3 nach dem Wert auftauchen? Wenn ja, würdest Du mir den Abend retten.
Danke Dir nochmal,
Kasimir

AW: Nun nur noch das Problem mit den Anführungszei
29.07.2007 20:28:00
Ramses
Hallo
man müsste mit den verschiedenen Fileformaten mal spielen, was dort für Möglichkeiten sind.
Auf die Schnelle hätte ich dir folgende Lösung:
Die CSV mit Notepad öffnen und
Bearbeiten - Suchen und Ersetzen:
Suche: """, Ersetzen durch: "
Ansonsten, wenn das zu umständlich ist, wie in deinem ersten Code die Datei öffnen, dort alles mit dem code reinschreiben, anschliessend die Datei schliessen, aber OHNE diese zu speichern.
Gruss Rainer

Anzeige
AW: Nun nur noch das Problem mit den Anführungszei
29.07.2007 20:41:16
Kasimir
Hallo Reiner,
danke Dir für Deine Antwort.
Die Lösung mit dem Notepad ist nicht das, was ich mirvorstelle. Ich möchte die Daten über eine UserForm eingeben, diese sollen dann in der CSV-Datei abgelegt werden und zum Schluss gespeichert werden. Danach soll die Datei schon so vorhanden sein, dass ich diese direkt ohne diese nochmal über z.B. Notepad bearbeiten zu müssen, an mobile.de übergeben.
Oder kann man Deinen Vorschlag mit Notepad und dem Suchen und Ersetzen eventuell auch aus Excel steuern? Dann würde die Lösung mich weiterbringen?
Was meinst Du eigentlich damit, die Daten in die CSV-Datei schreiben (ich gehe mal davon aus, die Daten, die als Text deklariert werden sollen, mit den Anführungszeichen übergeben) und diese zu schließen ohne diese zu speichern? Was passiert denn dann? Würde mich freuen, wenn du mir das noch beantworten könntest.
Eventuell hat ja noch jemand anderes eine Idee, wie ich Daten mit Anführungszeichen in eine CSV-Datei bekomme?
Danke und Gruß,
Kasimir

Anzeige
AW: Nun nur noch das Problem mit den Anführungszei
29.07.2007 20:44:00
Ramses
Hallo
"..Was meinst Du eigentlich damit, die Daten in die CSV-Datei schreiben ..."
So wie du es mit deinem ersten Codebeispiel gezeigt hast.
Grundsätzlich würde das funktionieren. Du darfst die CSV in EXCEL dann einfach nicht speichern, sonst wird das alles wieder überschrieben :-)
Gruss Rainer

AW: Nun nur noch das Problem mit den Anführungszei
30.07.2007 08:58:05
Kasimir
Hallo Rainer,
danke Dir für Deine Antwort. Jetzt habe ich verstanden, was Du gemeint hast. Das Problem an dem Makro ist halt nur, dass die CSV-Datei geschlossen sein muss, da ansonsten der Zugriff verweigert wird. Ich behelfe mir da jetzt etwas anders. Ist zwar nicht ganz so, wie ich dachte, aber ich mache es im Moment jetzt wie folgt:
Ich lese beim Öffnen meiner Datei die CSV-Datei in meine Exceldatei ein und schließe die CSV-Datei gleich wieder. Danach mache ich meine Änderungen oder Neueinträge. Wenn ich das erledigt habe, werden die Daten wieder zurück in die CSV-Datei geschrieben. Ist zwar etwas umständlich, funktioniert aber. Nachfolgend mal beide Makros zum Einlesen und Exportieren, für die, die es interessiert.
Option Explicit
Public Const Datei_KFZ = "KFZ_Auflistung.csv"
Public Const Datei_Hersteller = "Hersteller_Auflistung.csv"
Public Const Datei_Cardatenbank = "Cardatenbank.csv"
Public Const Datei_Karosserie = "Karosserie_Auflistung.csv"
Public Const Datei_Allgemeine_Auflistungen = "Allgemeine_Auflistungen.csv"

Sub CSVopen()
Dim Pfad As String, Pfad_Datenbanken As String
Dim wks_Datenbank As Worksheet
Dim i As Integer
Application.ScreenUpdating = False
Pfad = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Herstellerdaten\"
Pfad_Datenbanken = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Datenbanken\"
Set wks_Datenbank = ThisWorkbook.Worksheets("Cardatenbank")
GetObject (Pfad & Datei_KFZ)
GetObject (Pfad & Datei_Hersteller)
GetObject (Pfad_Datenbanken & Datei_Cardatenbank)
GetObject (Pfad & Datei_Karosserie)
GetObject (Pfad & Datei_Allgemeine_Auflistungen)
Workbooks("Cardatenbank.csv").Sheets(1).Cells.Copy wks_Datenbank.Range("A1")
'Zellen aufbereiten
With wks_Datenbank
For i = 1 To .UsedRange.Rows.Count
.Cells(i, 2) = """" & .Cells(i, 2) & """"
.Cells(i, 3) = """" & .Cells(i, 3) & """"
.Cells(i, 4) = """" & .Cells(i, 4) & """"
.Cells(i, 5) = """" & .Cells(i, 5) & """"
.Cells(i, 7).NumberFormat = "00"".""0000"
.Cells(i, 8).NumberFormat = "00"".""0000"
.Cells(i, 9).NumberFormat = "00"".""0000"
.Cells(i, 17) = """" & .Cells(i, 17) & """"
.Cells(i, 25) = """" & .Cells(i, 25) & """"
.Cells(i, 26) = """" & .Cells(i, 26) & """"
.Cells(i, 29) = """" & .Cells(i, 29) & """"
Next
End With
With Workbooks("Cardatenbank.csv")
.Close
End With
End Sub



Sub CSVExport()
Dim Exportfile As String
Exportfile = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Datenbanken\" & " _
Cardatenbank.csv"
ExportDatei = FreeFile
Set wkb_Datenbank = ThisWorkbook.Worksheets("Cardatenbank")
Open Exportfile For Output As #ExportDatei
For iRow = 1 To wkb_Datenbank.UsedRange.Rows.Count
For iCol = 1 To wkb_Datenbank.UsedRange.Columns.Count
sTxt = sTxt & CStr(wkb_Datenbank.Cells(iRow, iCol).Text) & ";"
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1)
Print #ExportDatei, sTxt
sTxt = ""
Next iRow
Close #ExportDatei
End Sub


Ich kennzeichne den Beitrag nochmal als offen, für den Fall, dass doch noch jemand eine Möglichkeit sieht, mein Problem mit den Anführungszeichen zu lösen.
Ansonsten nochmal danke Rainer für die Unterstützung.
Gruß,
Kasimir

Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige