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

savas csv mit Kroatischen Zeichen

savas csv mit Kroatischen Zeichen
11.09.2017 20:52:22
heinzs
Hallo alle zusammen,
ich habe eine Exceltabelle, deren Sheets Felder aus einer DB enthalten; diese haben zum Teil kroatische Zeichen z.B. c mit accent agui obenauf, ähnlich wie é nur eben mit c.
Innerhalb des Excelsheets werden alle diese Sonderzeichen dargestellt.
Über ein Macro speichere ich die einzelnen Sheets im xlcsvwindows Format:
ActiveWorkbook.SaveAs Filename:=gn_datei_mit_pfad, FileFormat:=xlCSVWindows, local:=True
Problem: Die kroatischen Sonderzeichen werden in der CSV als ? dargestellt.
Anmerkung:
Die Exceltabelle hat ca. 50 Sheets mit Quelle aus deutscher DB bzw.kroatischer DB.
Die deutschen Sonderzeichcen sind in den CSV Dateien korrekt nur eben nicht die kroatischen...
Hat jemand eine Idee?
Danke für Hilfe,
Heinz

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

Betreff
Datum
Anwender
Anzeige
AW: savas csv mit Kroatischen Zeichen
12.09.2017 08:49:41
Tino
Hallo,
kannst du mal solch eine Datei mit diesen Zeichen hochladen zum testen?
Wie ist Dein Trennzeichen für die Spalten?
Komma oder Semikolon?
Gruß Tino
AW: savas csv mit Kroatischen Zeichen
12.09.2017 11:41:36
heinzs
Hallo Tino,
anbei eine Beispieldatei.

Die Datei https://www.herber.de/bbs/user/116192.xlsx wurde aus Datenschutzgründen gelöscht


Trennzeichen ist ;
Vorab danke für deine Hilfe!
MfG
Heinz
AW: savas csv mit Kroatischen Zeichen
12.09.2017 13:20:45
Tino
Hallo,
versuch es mal so.
In der Zeile
Call SaveCSV(Tabelle1, SavePath & "Tabelle1.csv")
müsstest Du evtl. die Tabelle , Pfad + Dateiname anpassen.
Hier wird der Pfad verwendet wo sich die Excel befindet.
Wir speichern erst als Unicode Textfile und ersetzen danach das Trennzeichen.
Bin jetzt nicht mehr online!
kommt als Code in Modul1
Option Explicit 

Sub Speichern_CSV_Spezial()
Dim SavePath$
On Error GoTo ErrorHandler:
'Pfad wo gespeichert werden soll
SavePath = ThisWorkbook.Path
SavePath = SavePath & IIf(Right$(SavePath, 1) = "\", "", "\")

Call Events_(False)

'Speichern
'Tabelle, Pfad + Dateiname, Optional Trennzeichen Standard = ";"
Call SaveCSV(Tabelle1, SavePath & "Tabelle1.csv")

ErrorHandler:
Call Events_(True)
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Fehler: " & Err.Number
End If
End Sub

Sub SaveCSV(objTabelle As Worksheet, strPath$, Optional Trennzeichen$ = ";")
Dim F%, sText$
Dim FSO As Object, F1 As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(strPath) Then
Set F1 = FSO.GetFile(strPath)
If MsgBox("Datei '" & F1.Name & "' ist bereits vorhanden!" & vbCr & _
"Soll diese gelöscht werden?", vbQuestion + vbYesNo) = vbYes Then

F1.Delete
End If
Set F1 = Nothing
End If
Set FSO = Nothing

objTabelle.Copy
ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlUnicodeText, CreateBackup:=False
ActiveWorkbook.Close False

F = FreeFile
Open strPath For Binary As #F
sText = Space$(LOF(F))
Get #F, , sText
Close

sText = Replace(sText, vbTab, Trennzeichen)

F = FreeFile
Open strPath For Output As #F
Print #F, sText
Close #F

End Sub

Sub Events_(booSchalter As Boolean)
With Application
.ScreenUpdating = booSchalter
.DisplayAlerts = booSchalter
.EnableEvents = booSchalter
.Calculation = IIf(booSchalter, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Gruß Tino
Anzeige
AW: savas csv mit Kroatischen Zeichen
12.09.2017 13:28:09
mmat
Hallo
Probier doch mal ob dir
FileFormat:=xlUnicodeText
genügt. Die Zellen werden durch Tabs getrennt, das ist meistens ausreichend.
AW: savas csv mit Kroatischen Zeichen
12.09.2017 21:14:44
heinzs
Hallo,
Danke für Eure Hilfe.
ActiveWorkbook.SaveAs Filename:="test.csv", FileFormat:=xlUnicodeText, local:=True
Bildet nur die ersten 6 Zeichen meiner Exceltabelle korrekt ab.
Die restlichen 4 leider nicht, ich denke es liegt am Parameter xlUnicodeText...

Die Datei https://www.herber.de/bbs/user/116192.xlsx wurde aus Datenschutzgründen gelöscht


Hat jemand noch eine Idee?
MfG
Heinz
Anzeige
ist das die richtige Datei? oT.
13.09.2017 10:07:05
Tino
noch eine Variante mit StrConv()
13.09.2017 12:23:38
Tino
Hallo,
hier noch eine Variante, kannst ja mal testen!
StrConv(), siehe auch hier wegen Version!
https://msdn.microsoft.com/de-de/library/office/gg264628.aspx
Sollte dies nicht gehen.
deaktiviere/lösche diese Zeile
sAusgabe = StrConv(sText & vbCrLf, vbUnicode)

und aktiviere diese Zeile
sAusgabe = ConvertToUnicode(sText & vbCrLf)

Sub Speichern_CSV_Spezial()
Dim SavePath$
On Error GoTo ErrorHandler:
'Pfad wo gespeichert werden soll
SavePath = ThisWorkbook.Path
SavePath = SavePath & IIf(Right$(SavePath, 1) = "\", "", "\")

'Speichern
'Tabelle, Pfad + Dateiname, Optional Trennzeichen Standard = ";"
Call SaveCSV(Tabelle1, SavePath & Tabelle1.Name & ".csv")

'' evtl. weitere Tabelle
'Call SaveCSV(Tabelle2, SavePath & Tabelle2.Name & ".csv")

ErrorHandler:

If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Fehler: " & Err.Number
End If
End Sub

Sub SaveCSV(objTabelle As Worksheet, strPath$, Optional Trennzeichen$ = ";")
Dim F%, sText$, sAusgabe$, n&, varArray
Dim FSO As Object, F1 As Object

On Error GoTo ErrorH:

With objTabelle.UsedRange
If .Rows.Count > 1 Or .Columns.Count > 1 Then
varArray = .Value
Else
If .Cells(1, 1) <> "" Then
varArray = .Cells(1, 1).Resize(, 2)
Redim Preserve varArray(1 To 1, 1 To 1)
Else
MsgBox "Tabelle entält keine Daten!"
End If
End If
End With


Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(strPath) Then
Set F1 = FSO.GetFile(strPath)
If MsgBox("Datei '" & F1.Name & "' ist bereits vorhanden!" & vbCr & _
"Soll diese gelöscht werden?", vbQuestion + vbYesNo) = vbYes Then

F1.Delete
End If
Set F1 = Nothing
End If
Set FSO = Nothing

F = FreeFile
Open strPath For Output As #F
Print #F, Chr(255); Chr(254);
With Application
For n = 1 To Ubound(varArray)
sText = Join(.Index(varArray, n), Trennzeichen)
sAusgabe = StrConv(sText & vbCrLf, vbUnicode)
'' sollte StrConv nicht funktionieren *******
'sAusgabe = ConvertToUnicode(sText & vbCrLf)
'' ******************************************
Print #F, sAusgabe;
sAusgabe = ""
Next
End With
Close #F

Exit Sub
ErrorH:
If F <> 0 Then Close #F
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Fehler: " & Err.Number
End If
End Sub

Function ConvertToUnicode(sText$)
Dim n&
For n = 1 To LenB(sText)
ConvertToUnicode = ConvertToUnicode & Chr(AscB(MidB$(sText, n, 1)))
Next
End Function
Gruß Tino
Anzeige
AW: savas csv mit Kroatischen Zeichen
13.09.2017 16:02:14
mmat
Also dann sind das S und das Z mit Pfeil nach unten falsch?
Sorry, bei mir nicht reproduzierbar ...
AW: savas csv mit Kroatischen Zeichen
14.09.2017 20:05:59
heinzs
Ja,
S und das Z mit Pfeil nach unten sind falsch sind in CSV bei mir inkorrekt; sind diese bei Dir korrekt?
MfG
Heinz
AW: savas csv mit Kroatischen Zeichen
15.09.2017 14:02:52
mmat
Ja, bei mir korrekt. Vielleicht liegt's bei dir an der Schriftart, nicht alle Fonds haben alle internationalen Zeichen. Versuch mal Arial

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige