Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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 file hat zu grosse Dateigroesse!?

CSV file hat zu grosse Dateigroesse!?
03.01.2018 16:25:40
Jürgen
Hallo zusammen,
kann mir was nicht richtig erklären und wollte hierzu nachfragen:
Ich exportiere aus einer *.xlsm Datei per folgenden Makro eine CSV-Datei:
Sub CSV()
' CSV Makro
ChDir "C:\tmp"
ActiveWorkbook.SaveAs Filename:="C:\tmp\audio-database.csv", FileFormat:= _
xlCSVUTF8, Local:=True, CreateBackup:=False
MsgBox "Datei erfolgreich als CSV exportiert"
Application.Quit
ThisWorkbook.Close Savechanges:=False
End Sub
Die CSV ist dann im Vergleich zur xlsm-Quelle riesig (3x so gross?)

Wenn ich nun die CSV öffne und wieder speichere, verliert die CSV-Datei an Größe.
Warum kann ich dies nicht gleich per Export-Makro so erledigen?
Muss das Makro um eine Option ergänzt werden? Es soll jedenfalls eine Typ "CSV UTF-8" dabei am Schluss rauskommen.
Danke & Gruss,
Juergen

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:19:05
onur
Warum "xlCSVUTF8" und nicht "xlCSV"?
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:22:23
Jürgen
weil , wenn ich die exportierte CSV Datei öffne und wieder speichere der Hinweis kommt, dass nun eine CSV UTF-8 gespeichert wird. Und anschließend ist sie kleiner. Darum nehme ich an, dass CSV UTF-8 das richtige Format ist, was ich brauche.
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:23:22
onur
Versuch es mal ohne UTF8.
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:27:38
Jürgen
evtl. drücke ich mich verständlich aus.
Ich exportiere ja zuerst eine normale CSV. Die ist aber zu gross. Dann nach öffnen dieser speichere ich die selbe dann im UTF-8 Format. Dann ist sie kleiner.
Wie müsste die makro Anweisung lauten, dass sofort eine CSV UTF-8 Format exportiert wid!? (sofern das überhaupt geht?)
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:29:14
onur
Aber dein Code sagt was anderes:
....FileFormat:= xlCSVUTF8,  ....

AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:34:43
Jürgen
ok, sorry, mein Fehler das nicht erwähnt zu haben.
Ich habe schon beides ausprobiert.
Sub CSV()
' CSV Makro
ChDir "C:\tmp"
ActiveWorkbook.SaveAs Filename:="C:\tmp\audio-database.csv", FileFormat:= _
xlCSV, Local:=True, CreateBackup:=False
MsgBox "Datei erfolgreich als CSV exportiert"
Application.Quit
ThisWorkbook.Close Savechanges:=False
End Sub
Weder xlCSV noch xlCSVUTF8 bringen was. Nur das anschliessende öffnen und speichern der beiden CSV's verringern die Dateigröße.
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:37:56
onur
Versuch das:
FileFormat:=xlCSVMSDOS

AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:40:18
onur
oder das:
ActiveWorkbook.SaveAs Filename:="C:\tmp\audio-database.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False

AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 17:58:09
Jürgen
Danke für den Info Link!
aber nochmals, ich kapiers nicht ganz:
die Verkleinerung der Datei stellt sich dann ein, wenn die "Features" beim speichern gelöscht werden. Was sind denn das in einer ordinären CSV Tabelle für Features bitte!? Da ist doch nix mehr drinnen? Das kann doch auch nicht an einer aufgeblähten letzten Zeile liegen?

Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 18:04:54
onur
Wenn du z.B ein Leerzeichen irgendwo in Zeile 50000 hast oder hattest (oder evtl mal eine komplette Spalte formatiert hast), geht für Excel dein Zeilenbereich bis 50000 bzw 65000 und ein bisschen.
Erst beim erneuten Laden merkt Excel, dass die Zeilen x bis 50000 in Wirklichkeit gar nicht gebraucht werden.
Öffne doch mal eine so grosse CSV mit dem Notepad und schaue mal, was da alles drin steht.
AW: CSV file hat zu grosse Dateigroesse!?
03.01.2018 23:46:46
Jürgen
nun, ich komme leider nicht weiter. Wahrscheinlich liegt es tatsächlich an irgendeinem Fragment wo irgendwo schlummert. Der Aufwand den Fehler zu suchen überschreitet jetzt den Aufwand, als wenn ich die Sache so löse, wie Leute teilweise aus dem Info Hyperlink: einfach nochmals die CSV Datei öffnen und nochmals speichern.
onur, danke jedenfalls für die Unterstützung!
Gruss, Juergen
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 19:05:21
Jürgen
Ok, es hat mir keine Ruhe gelassen...und habs gefunden, den Bock.
Beim öffnen mit wordpad kam es tatsächlich zu Tage:
durch ein Script werden Semikolon [;] Zeichen für Leerfelder produziert. Die hängt es dann einfach dran, ohne dass man die im Tabellenblatt sieht.
Wie da Abhilfe zu schaffen ist, kA. Aber wenigstens weiss ich woher es kommt.
Hier in WordPad vollgestopft:

Hier in Wordpad nachdem die CSV nochmals geöffnet und gespeichert wurde (dann fliegt alles raus, was unnütz ist), so auch die überflüssigen ";":

Hier das Script, welches ich in Verdacht habe (vielleicht liest es Werner und könnte helfen; ist ganz frisch aus seiner Feder). Es betrifft die Spalten J, K und L. Dort sammeln sich die Semikolons an:
Public Sub Zellformeln()
Dim loLetzte As Long
With Worksheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
'Formeln Spalte B
.Range(.Cells(3, 2), .Cells(loLetzte, 2)).FormulaLocal = _
"=WENN(ANZAHL(C3:D3)=2;--LINKS(F3;FINDEN(""_"";F3)-1);"""")"
'Formeln durch Werte ersetzen, wenn nicht gewünscht/benötigt dann löschen
.Range(.Cells(3, 2), .Cells(loLetzte, 2)).Value = _
.Range(.Cells(3, 2), .Cells(loLetzte, 2)).Value
'Formeln Spalte H
.Range(.Cells(3, 8), .Cells(loLetzte, 8)).FormulaLocal = _
"=WENN((C3="""")+(D3="""");"""";(""../wp-content/audio-database/" _
& """&WECHSELN(F3;"".aup"";""/"")))"
'Formeln durch Werte ersetzen, wenn nicht gewünscht/benötigt dann löschen
.Range(.Cells(3, 8), .Cells(loLetzte, 8)).Value = _
.Range(.Cells(3, 8), .Cells(loLetzte, 8)).Value
'Formeln Spalte I
.Range(.Cells(3, 9), .Cells(loLetzte, 9)).FormulaLocal = _
"=WENN(((C3="""")*(D3=""""))+((C3 ""; WENN(ISTZAHL(FINDEN("".mp3"";I3));""-"";""""))"
'Formeln durch Werte ersetzen, wenn nicht gewünscht/benötigt dann löschen
.Range(.Cells(3, 1), .Cells(loLetzte, 1)).Value = _
.Range(.Cells(3, 1), .Cells(loLetzte, 1)).Value
'Formeln Spalte G
.Range(.Cells(3, 7), .Cells(loLetzte, 7)).FormulaLocal = _
"=WENN(ISTZAHL(FINDEN("".aup"";E3));"" "";WENN(ISTZAHL(FINDEN("".mp3"";I3));""[Play…]"";""""))"
'Formeln durch Werte ersetzen, wenn nicht gewünscht/benötigt dann löschen
.Range(.Cells(3, 7), .Cells(loLetzte, 7)).Value = _
.Range(.Cells(3, 7), .Cells(loLetzte, 7)).Value
End With
End Sub

Danke & Gruss,
Juergen
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 19:17:18
onur
Was steht denn in "loLetzte" für ein Wert, wenn das makro läuft?
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 19:30:40
onur
Ich versuche gerade durch den code durchzublicken.
Vielleicht bin ich ja blind, aber was ich sehe ist dieses:
Im Range wird eine ellenlange Formel eingesetzt und sofort darauf durch den Wert ersetzt?
Aber wozu?
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 20:18:10
Jürgen
Hallo Onur,
das makro dient in Gänze einem txt-Files Import. Diese Daten werden für die spätere Verwendung online aufbereitet. Dazu sind zahlreiche Umstellungen und Ergänzungen, tauschen von Wörtern und Fragmenten an Text notwendig.
In die Zeilen J, K und L wird aus der Tabelle 2 Texte passend in Tabele 1 eingelesen. Anscheined ist es so, dass wenn keine Texte vorhanden sind zu den datenzeilen in Tabelle 1, werden dort Semikolons platziert (wie im Screenshot sichtbar). Die werden aber erst sichtbar, sobald man eine CSV im WordPad aufmacht.
Öffnet man dann die CSV nochmals und speichert sie, kommt ja der Hinweis, dass etliche Features verloren gehen können bei UTF-8 Speicherung. Das ist auch gut so, denn dann sind die ungeliebten Semikolons weg und die Datei geschrumpft.
Meinst du mit loLetzte = letzte Zeile?
Gruss, Juergen
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 20:24:37
onur
Die variable am Anfang des codes bestimmt die max. Zeilenanzahl.
Setze mal ein stop hinter:
With Worksheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row

und lese im lokal-fenster diese ab.
Welcher wert steht drin?
Aber zu meiner Frage:
dieser Code-Teil (und ebenso die anderen)

.Range(.Cells(3, 2), .Cells(loLetzte, 2)).FormulaLocal = _
"=WENN(ANZAHL(C3:D3)=2;--LINKS(F3;FINDEN(""_"";F3)-1);"""")"
'Formeln durch Werte ersetzen, wenn nicht gewünscht/benötigt dann löschen
.Range(.Cells(3, 2), .Cells(loLetzte, 2)).Value = _
.Range(.Cells(3, 2), .Cells(loLetzte, 2)).Value

Schreibt die Formel und überschreibt sie sofort wieder - WOZU?
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 21:36:19
Jürgen
Hallo Onur,
da ich kein VBA Experte bin, bitte um Erklärung:
a) wie soll ein Stop aussehen? nach der Makro Zeile?
With Worksheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
b) was ist im "lokal Fenster" gemeint? die normale Ansicht und deren Zeilen-Zahl?
c) zum Code: ich kanns mir nur so erklären (wie gesagt, Werner hat mir den geschrieben):
Da die Import Daten dynamisch sind, muss jedesmal die letzte Zeile erst ermittelt werden, wo die denn ist. Damit werden die Zellformeln in den Spalten nur bis dorthin ausgeführt. Könnte das damit zusammenhängen?
Danke & Gruss,
Juergen
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 21:44:51
onur
zu 1)
im vba-editor
With Worksheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
Stop'Hier ein Stop hinzufügen, damit der code hier stoppt

zu 2)
im vba-editor - Ansicht - Lokalfenster.
Hier kannst du alle aktuellen variablenwerte ablesen (wenn der code stoppt).
zu 3)
loLetzte wird nur am Anfang des Codes gelesen und es könnte sein, dass der wert viel zu hoch ist, deswegen ablesen.
zu meiner Frage: poste mal den ganzen code oder die datei.
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 22:25:39
Jürgen
Hallo Onur,
a) die Anzahl stimmt. Die letzte sichtbare Zeile nach Import der Daten ist derzeit

c) das ganze Sheet hat mehr als 300KB und ich musste zippen:
https://www.herber.de/bbs/user/118683.zip
Danke & Gruss,
Juergen
Anzeige
AW: CSV file hat zu grosse Dateigroesse!?
04.01.2018 22:52:52
onur
Wie vermutet:
Zeile 14071+14072 haben eine Zeilenhöhe, die von den Anderen abweicht.
Lösche diese Zeilen komplett.
AW: CSV file hat zu grosse Dateigroesse!?
05.01.2018 00:10:54
Jürgen
Hallo Onur,
Zeilen habe ich gelöscht. Aber leider kein Erfolg.
Die Dateigröße verringert sich erst signifikant nach nochmaligen öffnen und speichern der CSV Datei.
Es sind immer noch die Semikolons zuvor angehängt. Nach Speicherung nicht mehr. Wie verhext.
Danke & Gruss,
Jürgen
AW: CSV file Nachtrag
05.01.2018 00:29:44
Jürgen
Hallo Onur,
hab etwas gesucht und da hatte jemand ähnliche Problem mit dem SVerweis ("Excel bläht sich durch Sverweis auf"), welche ich ja auch benütze. Könnte das die Ursache sein?

http://www.office-loesung.de/ftopic519311_15_0_asc.php
Ich weiss zwar nicht wie das makro im Detail wirkt, aber anscheinend hat er durch diesen Code Abhilfe schaffen können:
With ActiveSheet.Range("N6:N" & Range("$D65536").End(xlUp).Row)
.FormulaR1C1 = "=if(iserror(VLOOKUP(RC[-10],Tabelle1!C[-10]:C[11],11,0)),0,VLOOKUP(RC[-10],Tabelle1!C[-10]:C[11],11,0))"
.Value = .Value
End With
Wäre das ein Versuch? aber wie passe ich das an meine Tabelle1 an?
Danke & Gruss,
Juergen
AW: CSV file Nachtrag
05.01.2018 01:19:25
onur
Nee, das ist ein anderes Problem.
Markiere auf Blatt 1+2 Zeilen 2-20000 - Lösche komplette Zeilen.
AW: CSV file Nachtrag
05.01.2018 13:46:41
Jürgen
Hallo Onur,
ich habe jetzt alles erdenkliche gelöscht. Am Schluss hatte ich Spalte für Spalte gelöscht, wie auch die Tabelle 2 +3. Kontrolle über Erfolg oder Misserfolg (Erfolg= keine Semikolons mehr sichtbar) war immer die exportierte CSV im WordPad anzusehen.
Resultat:
egal was ich lösche (Spalten, Tabellenblätter oder Zellinhalte) die ;-Dinger sind immer nach dem Export da. Wohlgemerkt, ich habe bis jetzt IMMER NACH txt-Datenimport gearbeitet, also die CSV-exportiert.
Dann habe ich mal ohne dass zuvor txt-Datenimport ausgeführt wurde die CSV exportiert. Also eine leere Datentabelle. Und da sind die unnützen ";" auch schon da! Es muss also bereits in der ori unbenutzen Tabelle1 der Wurm sein. Aber dort habe ich alles an Zellen gelöscht was geht, bis Zeile 100.000 oder so.
Hier mal die aktuellen Daten und screenshot von der exportierten CSV der xlsm datei und die xlsm selbst.
Sollte eben normal leer sein, ist sie aber allem Anschein nicht! Wo kann sich jetzt der Hund noch vergraben haben? Zum verzeifeln!!
https://www.herber.de/bbs/user/118699.zip

Danke und Gruss,
Juergen
AW: CSV file Nachtrag
05.01.2018 17:52:16
onur
Ich würde dir ja gerne helfen, aber du hast mir immer noch nicht verraten, wofür der Code von Werner gebraucht wird und was er bewirken soll.
AW: CSV file---> gefunden ! gelöst!
05.01.2018 23:25:19
Jürgen
Hallo Onur,
ich habe schon versucht dir das mit Werners Makro zu erklären. Aber wahrscheinlich zu schlecht. Sorry. Aber ich kann's leider auch grob erklären, da wie gesagt ich ein VBA DAU bin. Leider.
Im Prinzip ersetzt das Makro vorherige Zellformeln, die fest ins die Spalten runter kopiert wurden. So nach Gefühl bis 10.000 Zeile. Das war natürlich nicht sonderlich elegant und blähte auch die xlsm unnötig auf. Dann entwarf Werner dieses Script, was jetzt im Prinzip 2 Sachen macht:
es holt die Daten wie die Zellformel rein und macht das aber nur bis zur letzten benutzten Zeile des Tabellen-Blattes. Elegant wie das nun geht.
Aber zu meinem Problem der CSV:
Es war eine Zell-Rahmen-Formatierung auf Tabelle 1 in den ersten 2 Zeilen die Ursache. Ja, ich konnte es auch nicht glauben. Eine senkrechte Rahmenlinie und eine waagrechte wurden ins CSV mit diesen Semikolons geschrieben/interpretiert. Ich konnte das auch nicht durch bloßes löschen der Linien beheben. Erst nachdem ich das komplette Tabellen-Blatt gelöscht hatte und neu angelegt, war Ruhe im Stall.
Vielen Dank jedenfalls für deine Geduld, ohne den Hinweis von dir wäre ich der Sache bzgl. wordpad wäre ich da nicht weitergekommen.
Danke & Gruss,
Juergen
AW: CSV file---> gefunden ! gelöst!
06.01.2018 01:26:03
onur
Habe mir die Datei eben nochmal angesehen.
Oh peinlich, war doch die ganze Zeit direkt vor unseren Augen (die senkrechte Linie vor allem).

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige