Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Bereich mit Schleife in große csv-Datei

Bereich mit Schleife in große csv-Datei
25.06.2023 18:42:06
Bernd

Hallo Forums-Experten,

ich möchte einen Bereich mit einer for-next Schleife (ca. 3000 wird die Schleife durchlaufen) in eine große csv-Datei kopieren.
Die Daten-Bereiche sollen einfach (ist das einfach, ich weiß es nicht?) untereinander kopiert werden in der csv-Datei, da ein exceltabellenblatt mit 1Mio Zeilen zu klein ist...

Die Trennung der einzelnen Spalten in Excel soll in der csv-Datei mit einem Semikolon erfolgen.
Hier auszugsweise der relevante Teil vom Makro, welches ich bisher in Excel nutze

'Sheets("Auswertung").Select
'Range(Cells(259, 1), Cells(wEnde, 24)).Select
'Selection.Copy

Nun soll in eine csv-Datei kopiert werden
Bisher kopiere ich es in eine Tabellenblatt mit dem Namen CSV in der gleichen Arbeitsmappe

'Sheets("CSV").Select
'Spalte = 1
'CSV_Ende = Worksheets("KNN").Cells(Rows.Count, Spalte).End(xlUp).Row

'Cells(CSV_Ende + 1, 1).Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
':=False, Transpose:=False

'Next

Kann mir da jemand einen Code bitte generieren (was das Thema csv-Dateinen angeht, bin ich noch nicht einmal ein blutiger Anfänger...
Dateiname der CSV-Datei könnte z.B. sein Daten_TT_MM_YYYY.csv

Hinweis...vielleicht ist das wichtig(?)
In dem zu kopierenden Bereich steht in der Spalte B ein Datum mit dem Format TT.MM.YYYY.
In der Spalte C steht eine Buchstabenkombiantion (also Text bzw. String).
Ansonsten sind in den anderen Spalten Zahlen vom Format Double und das Dezimal-Trennzeichen ist ein Komma.
Ein Trennzeichen für 1000er habe ich nicht in Excel formatiert.


So, ich hoffe, ich habe nichts wichtiges vergessen für die Aufgabenstellung und bin gespannt auf Eure Antworten.

Vorab vielen Dank für die Hilfe!

Bernd

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich mit Schleife in große csv-Datei
25.06.2023 19:00:22
onur
"Die Trennung der einzelnen Spalten in Excel soll in der csv-Datei mit einem Semikolon erfolgen" und "Die Daten-Bereiche sollen einfach ... untereinander kopiert werden" ???
Was denn jetzt? Untereinander oder durch Semikolon getrennt? Was gibt es denn bei einer einzigen Spalte zu trennen?
" mit einer for-next Schleife" ? Wozu eine Schleife?


AW: Bereich mit Schleife in große csv-Datei
25.06.2023 22:29:45
Bernd
Also nochmal ganz einfach...
Ich will die Bereiche in einer Exceldatei in eine csv-Datei kopieren.
Und nochmal: weil mehr als eine Million Zeilen in der csv-Datei entstehen.
Die For-Next Schleife brauche ich, weil ich in jeder Schleife neue Daten in dem Bereich erzeuge, der dann in die eine csv-Datei kopiert werden soll...


Anzeige
AW: Bereich mit Schleife in große csv-Datei
25.06.2023 22:42:01
onur
Und WAS willst du mit einer CSV mit mehr als 1 Million Zeilen? In Excel bearbeiten geht ja wohl nicht. Händisch alles durchgucken??? WOZU das Ganze?


AW: Bereich mit Schleife in große csv-Datei
25.06.2023 22:54:08
Piet
Hallo

Sorry, es ist meines Erachtens nach wie vor nicht optimal mit For Next zu arbeiten. Was geschieht bei Datenüberlauf????

Mein Tipp ist, zuerst ermitteln wieviele Daten nach CSV kopiert werden sollen, und über die LastZell zu berechnen ob man über das Blattende hinaus kommt?? Dannn erledigt sich das kopieren von selbst durch Laufzeit Fehler! Oder irre ich mich da nach 25 Jahren Excel???

Ob mit For Next oder mit meiner Methode, du kommst nicht umhin vor dem Kopieren zu prüfen ob der vorhandene Platz zum Einfügen ausreicht! Und was machst du wenn das Blatt voll ist???

mfg Piet


Anzeige
AW: Bereich mit Schleife in große csv-Datei
25.06.2023 22:18:07
Piet
Hallo

ich habe den Code mal von den unnötigen Selects befreit. Und wie der Kollege schon sagte, OHNE For Next!!
In dem Falle sucht man die LastZell in der Copy Tabelle, und kopiert direkt den ganzen Bereich nach CSV.
Bei CSV_Ende kann man hinter Row +1 setzen! Und du suchst die CSV LastZell in der Tabelle "KNN". Wieso???

mfg Piet

  • Sub test()
    'LastZell in Auswertung + CSV ermitteln
    wEnde = Worksheets("Auswertung").Cells(Rows.Count, 1).End(xlUp).Row
    CSV_Ende = Worksheets("CSV").Cells(Rows.Count, 1).End(xlUp).Row + 1
    
    Sheets("Auswertung").Range("A259:X" & wEnde).Copy
    Sheets("CSV").Cells(CSV_Ende, 1).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    End Sub



  • Anzeige
    AW: Bereich mit Schleife in große csv-Datei
    25.06.2023 22:22:51
    Piet
    Nachtrag

    wie schafft man es denn auf über 1 Million Zeilen zu kommen. Ich habe Bedenken ob das stimmen kann??
    Falls ja sollte man das was zuviel ist in eine Archiv Datei auslagern.

    mfg Piet


    AW: Bereich mit Schleife in große csv-Datei
    25.06.2023 22:28:59
    Bernd
    Also nochmal ganz einfach...
    Ich will die Bereiche in einer Exceldatei in eine csv-Datei kopieren.
    Und nochmal: weil mehr als eine Million Zeilen in der csv-Datei entstehen.
    Die For-Next Schleife brauche ich, weil ich in jeder Schleife neue Daten in dem Bereich erzeuge, der dann in die csv-Datei kopiert werden soll...


    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 17:32:04
    Bernd
    Danke für Eure Beiträge


    Anzeige
    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 06:33:55
    ralf_b
    hi Bernd,
    also wenn du nur einen Zellbereich direkt in eine csv datei schreiben möchtest ohne erst das ganze Blatt vollzuschreiben, dann evtl. so.
    das erste ist ein automatisch von MZ-tools generierter Korpus für so ein Vorhaben. Sieht gar nicht so kompliziert aus
    Dim fileHandle As Integer
       
       fileHandle = FreeFile
       
       Open "f:\test\csv.csv" For Output As #fileHandle
       Print #fileHandle, "werte als Text in datei"
       
       Close #fileHandle             
    das ist ein Beispiel aus einer Datei in meiner Wühlkiste. Hier wird nur ein Zellbreich in eine CSV geschrieben.
    Da müßte dann noch eine Schleife rein, um die Bereiche mehrfach(jeweils nach den Berechnungsschritten) zu durchlaufen.
    Hoffe es hilft etwas weiter.
     Sub ExportCSV()
           Dim ws     As Worksheet, fd As FileDialog, rngTest As Range, rng As Range, fltr As FileDialogFilter
           Dim i      As Long, lRow As Long, lLastRow As Long, line As String
           Dim csvContent As String, fso As Object, csvFile As Object
           Dim strFilePath As String
     '******************************************************************************
           strFilePath = "F:\txxxxxxxxx\_" & Format(Date, "dd_mm_YYYY") & ".csv" 'anpassen
    
     '*************************************************************************************
             If Dir(strFilePath) > "" Then Kill strFilePath 'Datei löschen wenn vorhanden
            
            Set fso = CreateObject("Scripting.FileSystemObject")
            Set csvFile = fso.OpenTextFile(strFilePath, 2, True)
         
            'Worksheet auf dem die Daten stehen
            Set ws = Worksheets("Kunden")
            lLastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'letzte belegte Zeile in Spalte A
            'schleife über Datenbereich und Text erstellen 
              For lRow = 3 To lLastRow                
                    line = ""
                    For Each rng In ws.Range("C" & lRow & ":H" & lRow & "," & "S" & lRow & ":U" & lRow) '
                        line = line & "" & rng.Value & "" & ";"   'Semikolon als Trenner in der Zeile
                    Next
                      csvContent = csvContent & Left(line, Len(line) - 1) & vbNewLine  ' Zeile abschliessen
            Next
            
            If csvContent = "" Then MsgBox "Keine Daten gefunden": Exit Sub
            
            csvFile.Write (csvContent)   'Daten in Datei schreiben
           
            csvFile.Close   'datei schliessen 
    
            If Err = 0 Then MsgBox "Datei erstellt" & vbLf & strFilePath, vbInformation, "CSV - Export"
                            
       End Sub


    Anzeige
    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 12:12:34
    snb
    Du irrst dich: du brauchst gar kein CSV.
    Du vergisst zu beschreiben welche 'task' du erledigen willst.

    Wenn 2^20 Zeilen nicht reichen kann mann immer ab Spalte 'X' erneut 2^20 Zeilen befüllen.


    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 12:27:27
    onur
    Ob das mal reicht .... Er analysiert bestimmt zu Fuß die Datensätze vom SETI-Institut. :)


    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 12:38:11
    Piet
    Schmunzel ...

    ob das per VBA geht könnte dann die nächste Frage im forum sein. Ich bin gespannt! Man sieht sich. ...

    mfg Piet


    AW: Bereich mit Schleife in große csv-Datei
    26.06.2023 17:33:22
    Bernd
    Danke für die Rückmeldung. Ich überlege mir in Ruhe, ob ich die Aufgabenstellung nochmals neu einstelle, dann mit besserer Beschreibung und Erläuterung zum Hintergrund

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige