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

Export in *.CSV-Datei mit Kommata als Feldtrenner

Export in *.CSV-Datei mit Kommata als Feldtrenner
04.03.2003 17:18:33
Michaela
Hallo,

ich möchte eine xls-Datei als csv-Datei speichern - allerdings nicht mit Semikolon als Trennzeichen, sondern mit Kommatas als Trennzeichen. Gleiches Problem ist in dem Beitrag Text-Index 074799 als Modul hinterlegt, jedoch wird bei mir trotzdem das Semikolon als Trennzeichen gespeichert und nicht das Komma.

Sub AlsCsvSpeichern()
Dim sFile As String
ActiveSheet.Copy
sFile = Application.Path & "\testext.csv"
ActiveWorkbook.SaveAs _
FileName:=sFile, _
FileFormat:=xlCSV
ActiveWorkbook.Close savechanges:=False
Workbooks.Open sFile
Columns.AutoFit
MsgBox "Weiter"
ActiveWorkbook.Close savechanges:=False
'Kill sFile
End Sub

Gibt es hier evtl. eine Lösung - wäre Klasse, wenn mir jemand helfen könnte. Ich arbeite mit Excel XP.

Danke, Michaela


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Export in *.CSV-Datei mit Kommata als Feldtrenner
04.03.2003 18:01:57
ulrich

hi Michaela,
das Komma als Trennzeichen ist hochgefährlich, denn dann werden
Dezimalzahlen auch in Spalten getrennt!!! Die Pfennige stehen
dann in de nächsten Spalte.
Was aber funzt ist, wenn Du in der Systemsteuerung von
Windows unter "Ländereinstellungen" in den Registerkarten
"Zahlen" und "Währung" das Dezimaltrennzeichen und das
Listentrennzeichen umstellst. Darauf hört dann auch Dein EXCEL
und trennt die Spalten brav mit Kommatömern und nicht mehr mit
Semikolönnern.
Viel Glück
Ulrich


Re: Export in *.CSV-Datei mit Kommata als Feldtrenner
04.03.2003 18:05:11
Michaela

Hallo Ulrich,

ich brauche aber das komma als Trennzeichen - es sind keine beträge etc. in der Datei vorhanden. Über Ländereinstellung ist auch nicht die optimale Lösung, da die DAtei bei unseren usern exportiert werden muß - und diese die Ländereinstellung nicht verändern dürfen.
hast Du evtl. eine andere Lösung?

Danke,
Michaekla

Anzeige
Re: Export in *.CSV-Datei mit Kommata als Feldtrenner
04.03.2003 18:17:41
Ulrich

tststs,
man kann's den Frauen nicht recht machen! ;o)
Hab's gerade nochmal probiert, das Listentrennzeichen
alleine umstellen reicht nicht! EXCEL weigert sich vehement,
als Listentrennzeichen und Dezimalzeichen dasselbe zu
verwenden.
Da gibt's nur noch eins, die CSV in Word einlesen, und
"Suchen und Ersetzen"!
Sorry
Ulrich

Alternativ wenn denn unbedingt sein muss..... :-))
04.03.2003 18:59:48
Ramses

Hallo Michaela,

nachdem du die Datei in das CSV-Format exportiert hast, lässt du dieses Makro laufen, es ersetzt JEDES Semikola gegen ein Komma:


Sub Read_Extern_File_and_Replace_Signs()
'(C) Ramses
Dim i As Long, n As Integer
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim TxtLines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim TextArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\Demo.csv"
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
TxtLines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
    Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
    'Zähler hochzählen
    TxtLines = TxtLines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim TextArr(TxtLines)
'Einlesen der Dateien in das Array
For i = 1 To TxtLines
    'Zeile einlesen
    Line Input #1, TextArr(i)
    'temporär übergeben
    tempStr = TextArr(i)
    'Schleife um Semikola im String zu suchen
    For n = 1 To Len(tempStr)
        'Wenn gefunden wird das Zeichen ersetzt
        If Mid(tempStr, n, 1) = ";" Then
            tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, ",")
        End If
    Next n
    'Der korrigierte String wird wieder in das array zurückgeschrieben
    TextArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To TxtLines
    'Array an die jeweilige Zeile zurückschreiben
    Print #1, TextArr(i)
Next i
'Schliessen
Close #1
'Alle Semikola ersetzt :-))

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16


Gruss Rainer



Anzeige
Alternativ wenn denn unbedingt sein muss..... :-))
04.03.2003 18:59:50
Ramses

Hallo Michaela,

nachdem du die Datei in das CSV-Format exportiert hast, lässt du dieses Makro laufen, es ersetzt JEDES Semikola gegen ein Komma:


Sub Read_Extern_File_and_Replace_Signs()
'(C) Ramses
Dim i As Long, n As Integer
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim TxtLines As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim TextArr As Variant
Dim ReadFile As String, tempStr As String
'Name der Datei in der die Semikola ersetzt werden sollen
ReadFile = "C:\Demo.csv"
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
TxtLines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
    Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
    'Zähler hochzählen
    TxtLines = TxtLines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim TextArr(TxtLines)
'Einlesen der Dateien in das Array
For i = 1 To TxtLines
    'Zeile einlesen
    Line Input #1, TextArr(i)
    'temporär übergeben
    tempStr = TextArr(i)
    'Schleife um Semikola im String zu suchen
    For n = 1 To Len(tempStr)
        'Wenn gefunden wird das Zeichen ersetzt
        If Mid(tempStr, n, 1) = ";" Then
            tempStr = Application.WorksheetFunction.Replace(tempStr, n, 1, ",")
        End If
    Next n
    'Der korrigierte String wird wieder in das array zurückgeschrieben
    TextArr(i) = tempStr
Next i
'File schliessen
Close #1
'File zum schreiben wieder öffnen
Open ReadFile For Output As #1
For i = 1 To TxtLines
    'Array an die jeweilige Zeile zurückschreiben
    Print #1, TextArr(i)
Next i
'Schliessen
Close #1
'Alle Semikola ersetzt :-))

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16


Gruss Rainer



Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige