Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
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 Export im UTF 8 Format

CSV Export im UTF 8 Format
15.08.2019 16:52:07
ferris76
Hallo zusammen,
ich hoffe Ihr könnt mir weiterhelfen. Für eine Dateneingabe in Excel habe ich mir verschiedene Makros im Internet zusammengesucht, die für sich jeweils alleine genommen ihre Aufgabe erfüllen.
Als erstes werden die erfassen Daten per Button und Makro in ein anderes Tabellenblatt geschrieben:
Sub Schaltfläche4_KlickenSieAuf()
Worksheets("CSV").Rows("2:11").Insert shift:=xlDown
Range("A34:AU43").Copy
Worksheets("CSV").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Als zweites lösche ich über ein weiteres Makro die nicht benötigten Leerzeilen:
Sub Leerzeilen_loeschen()
Dim lngSpalte As Long
'** Spalte, die auf Leerzeichen geprüft werden soll
lngSpalte = 1
For A = Worksheets("CSV").Cells(Rows.Count, lngSpalte).End(xlUp).Row To 1 Step -1
If Worksheets("CSV").Cells(A, 1).Value = "" Then
Rows(A).Delete shift:=xlUp
End If
Next A
End Sub
Und als drittes sollen dann die Daten als CSV im UTF8 Format gespeichert werden. Das erledigt folgendes Makro:
Sub SaveUTF8File()
Dim fname As Variant
fname = Application.GetSaveAsFilename("UTF8.csv", "CSV-Dateien,*.csv,Alle Dateien,*.*")
If fname = False Then Exit Sub
SaveAsUTF8CSV (fname)
End Sub
Sub SaveAsUTF8CSV(fname As String)
Dim hfile As Integer ' Filehandle bzw. Dateinummer
Dim i As Long ' Zähler über alle Zeilen
Dim j As Integer ' Zähler über alle Spalten
Dim OneLine As String ' Eine Zeile als String
Dim maxcol As Integer ' max. Anzahl an Spalten
hfile = FreeFile
maxcol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Open fname For Output As #hfile
Print #hfile, Chr(&HEF); Chr(&HBB); Chr(&HBF);
For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
OneLine = ""
For j = 1 To maxcol - 1
OneLine = OneLine & Cells(i, j).Text & ","
Next j
OneLine = OneLine & Cells(i, j).Text & vbCrLf
Print #hfile, GetUTF8String(OneLine);
Next i
Close #hfile
End Sub
'
' frei nach http://www.vovisoft.com/unicode/UniFunctions.htm#ToUTF8
'

Private Function GetUTF8String(s As String) As String
Dim i As Integer  ' Zähler über die einzelnen Zeichen des utf16-Strings
Dim utf16 As Long, uc(2) As Byte
GetUTF8String = ""
For i = 1 To Len(s)
utf16 = AscW(Mid(s, i, 1))
If utf16 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Ich habe jetzt Daten eingegeben und jeweils immer abgespeichert. Dabei ist nach dem Löschen der überflüssigen Leerzeilen ein Tabellenblatt mit 140 Zeilen übriggeblieben. Wenn diese jetzt versuche als CSV abzuspeichern, bricht die Datei entweder bei Zeile 44 ab oder es wird ein Überlauf (Fehler 6) produziert, die Datei enthält aber immer noch nicht alle Daten und ist knappe 1,7 MB groß. Kann mir jemand weiterhelfen?
Gruß
ferris76

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Export im UTF 8 Format
15.08.2019 17:07:29
onur
Der Code alleine bringt nicht viel, da man nix testen oder debuggen kann.
AW: CSV Export im UTF 8 Format
15.08.2019 18:45:56
Martin
Hallo ferris76,
verwende besser das "File System Object", damit kannst du auch (per "WriteLine") zeilenweise in die Textdatei schreiben und die einmalige Angabe CharSet = "utf-8" erspart dir nervige VBA-Konvertierungskonstrukte.
Hier findest du eine Anleitung:
https://developer.rhino3d.com/guides/rhinoscript/read-write-utf8
Viele Grüße
Martin
AW: CSV Export im UTF 8 Format
15.08.2019 19:02:24
onur
Dumme Frage: Welches Blatt willst du exportieren?
Anzeige
AW: CSV Export im UTF 8 Format
15.08.2019 19:15:41
onur
Wenn es Blatt "CSV" ist, wie ich vermute und der Button sich auf Sheet "Artikel" befindet - wieso steht dann:
For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

und nicht
For i = 1 To Sheets("CSV").Cells.SpecialCells(xlCellTypeLastCell).Row

im Code?
AW: CSV Export im UTF 8 Format
15.08.2019 19:17:02
onur
Das Selbe gilt für:
maxcol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column

AW: CSV Export im UTF 8 Format
15.08.2019 19:30:09
ferris76
Ja, bezieht sich auf das Blatt CSV. Naja ich sage mal so, so gut kenne ich mich mit vba dann doch nicht aus, um solche Punkte zu erkennen :-). Deswegen bin ich ja hier, da es an sich funktioniert nur nicht mit mehr Daten.
Anzeige
AW: CSV Export im UTF 8 Format
15.08.2019 19:30:55
onur
Ändere das, dan läuft es.
AW: CSV Export im UTF 8 Format
15.08.2019 19:44:19
ferris76
Das hatte ich schon versucht, bin aber auch auf das selbe Problem gestoßen. Wahrscheinlich habe ich nicht überall den richtigen Pfad gesetzt. Tja jetzt geht es, aber die Datei wird echt groß, da irgendwie alle Zeilen und Spalten mit gespeichert werden. Irgendeine Idee dazu, wie man das verhindern kann?
AW: CSV Export im UTF 8 Format
15.08.2019 21:07:14
ferris76
Mit deiner Anmerkung zum Code hast du Recht. Ich hatte hier aber vergeblich nach einem Programm gesucht, das vernünftig UTF8 und csv abspeichert. Entweder funktionierte das eine oder das andere nicht richtig.
Aber, hey vielen Dank so funktioniert es. Wenn ich den Code richtig verstehe, begrenzt du die Anzahl der Spalten und zählst die Zeilen oder?
Anzeige
AW: CSV Export im UTF 8 Format
15.08.2019 22:28:16
onur
Wieso ich, dein Code war doch so (wenn auch fehlerhaft mit falscher Anzahl von Spalten und Zeilen).
Nach der ersten Korrektur erst kamen diese Fehler zum Vorschein (deswegen wurde die Datei so riesig) und ich habe sie auch korrigiert.
AW: CSV Export im UTF 8 Format
15.08.2019 19:44:00
onur
"An sich funktioniert" ? - Offen sichtlich ja nicht - knapp daneben ist doch auch vorbei
Nix für Ungut, aber du solltest nicht Code benutzen/verändern, den du nicht vollständig verstehst (im Internet gibt es auch für Anfänger genug Recherchemöglichkeiten).
Sonst ist es so wie bei "Jurassic Park", wo die "Wissenschaftler" Gensequenzen verwenden und manipulieren, ohne sie wirklich zu verstehen und sich wundern, wenn was Anderes dabei herauskommt, als sie geplant hatten.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige