Office: (Office 2019) Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen

Helfe beim Thema Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bin neu hier in diesem Forum und möchte allen erstmal ein "Hallo" sagen. Ich arbeite seit einiger Zeit an einem VBA Code und... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Leromo, 3. Oktober 2025.

  1. Leromo Neuer User

    Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen


    Hallo zusammen,

    ich bin neu hier in diesem Forum und möchte allen erstmal ein "Hallo" sagen.

    Ich arbeite seit einiger Zeit an einem VBA Code und irgendwie will es nicht ganz so funktionieren wie ich es mir vorstelle.

    Folgender Sachverhalt:
    Ich habe bestimmte Werte in einem Tabellenblatt, welche ich in einer geschlossenen CSV Datei an der nächsten freien Zelle übertragen möchte.
    Da es sich um dynamische Werte handelt, ist der zu kopierte Bereich dementsprechend immer verschieden.
    Ab Zelle A2 muss bis zu letzten gefüllte Zelle gesprüft werden und diese dann kopiert werden.
    Diese Werte müssen dann in einer csv Datei (welche die gleiche Überschriften hat) ab der nächsten freien Zelle in Spalte A eingefügt werden.

    Dazu habe ich folgenden Code (auch mit Mithilfe von ChatGPT) erstellen können:

    Code:
    Sub KopiereninCSV()
    
        Dim ws As Worksheet
        Dim lastRow As Long, lastCol As Long
        Dim i As Long, j As Long
        Dim csvPath As String
        Dim csvLine As String
        Dim fileNum As Integer
    
        Set ws = ThisWorkbook.Sheets("Mitarbeiter")
    
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    
        csvPath = "C:\Users\Benutzer\Desktop\Excel\Mitarbeiter.csv"
    
        fileNum = FreeFile
        Open csvPath For Append As #fileNum
    
        For i = 2 To lastRow
            csvLine = ""
            For j = 1 To lastCol
                csvLine = csvLine & """" & ws.Cells(i, j).Text & """"
                If j < lastCol Then csvLine = csvLine & ","
            Next j
            Print #fileNum, csvLine
        Next i
    
        Close #fileNum
    
        MsgBox "Daten erfolgreich in die CSV-Datei angehängt!", vbInformation
    
    End Sub
    
    Das kopieren in der Werte funktioniert super.
    Nur leider kopiert er mir alle Werte in der Spalte A, obwohl diese getrennt sein sollten (Spalte A, Spalte B usw.) wie aus der Ursprungsdatei.
    Könnt ihr mir bitte helfen und mir mitteilen, wie der Code auszusehen hat damit es genau so funktioniert.
    Die csv Datei ist im Format "CSV UTF-8 (durch Trennzeichen getrennt)" gespeichert.
    Vielen Dank im Voraus für eure Hilfe und wünschen allen einen schönen Feiertag und ein schönes langes Wochenende.

    VG
    Leromo
     
  2. R J
    R J hat Ahnung
    Hi Leromo,

    Zum Einen: VBA ist nicht überall erwünscht. OK, bei Dir mag das zulässig sein, sonst würdest Du es ja nicht anwenden...Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen *:)*
    Dennoch, VBA zum Import von CSV-Daten zu verwenden, ist eigentlich nur dann sinnvoll, wenn Deine Officeversion kleiner 2010 ist.
    Für 2010 bis 2013 installiert man das AddIn für Power Query, ab 2016 ist PQ schon standardmäßig enthalten. Damit (also mit PQ) holt man sich externe Daten. Übrigens nicht nur aus csv-Dateien....

    Viel einfacher machts Dir eigentlich nur noch Alexa.... Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen *;)*

    PS:
    ...uups... hab gerade erst geschnallt, dass Du den umgekehrten Weg gehen willst, also Exceldaten in eine csv schreiben.
    Warum willst Du da was einfügen? Warum überschreibst (speicherst) Du die Daten nicht einfach unter dem gewünschten Dateinamen als csv?
     
  3. Leromo Neuer User
    Hi Ralf,

    vielen Dank für deine schnelle Antwort.
    Die Exceldatei dient nur zur Berechnung. Darum kann ich sie nicht als csv abspeichern.
    Bisher habe ich die Daten von ganzen Seite mit einem Makro kopiert (da es sehr viele Spalten gibt) und diese dann händisch in der csv Datei eingefügt und abgespeichert.
    Da es sich jedoch um viele Exceldateien (insgesamt 23) handelt dachte ich mir mit einem Makro etwas Zeit damit sparen zu können.

    Wie bereits erwähnt, kopiert er mir die Daten ja auch alles schön im Hintergrund, aber leider fügt er alles nur in der Spalte A ein, anstatt wie z.B. bis Spalte RL.

    VG
    Leromo
     
  4. RPP63_neu
    RPP63_neu Erfahrener User

    Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen

    Moin!
    Eine CSV hat keine "Zellen"!
    Schließlich handelt es sich dabei um eine reine Textdatei.
    Dass man eine Datei (leider standardmäßig) mit Excel öffnen kann, hat schon Millionen Nutzer zur Verzweiflung gebracht (und lässt Excel-Foren überlaufen)!
    Schließlich greift beim Öffnen die Excel-Logik …
    Dann wird gerne aus 17-4 der 17.04.2025
    aus 2e5 wird 20000 (im Zahlenformat 2,00E+05)
    aus der Artikelnummer 1234567890123456 wird 1234567890123460
    Deshalb: Power Query!

    Gruß Ralf
     
    RPP63_neu, 3. Oktober 2025
    #4
  5. Leromo Neuer User
    Moin Ralf,

    danke dir für deine Antwort.

    Mit PQ kenne ich mich leider überhaupt nicht aus. Dachte wirklich, dass man das mit einem VBA lösen könnte.
    Wie gesagt, händisch fügt er alles in jeder Spalte richtig ein, nur mit dem o.g. Makro leider nicht.
    Dann bleibt mir wohl nichts anders übrig, als alles weiterhin händisch einzufügen, damit die Optik passt.

    Trotzdem vielen Dank euch beiden für eure Antworten.

    VG
    Leromo
     
  6. Hallo Leromo,

    So etwas geht grundsätzlich nicht, denn man kann in keine geschlossene Datei schreiben.
    Der Weg ist:
    1. CSV-Datei in ein neues Tabellenblatt importieren.
    2. Daten in dem Blatt entsprechend deinen Wünschen ändern.
    3. Daten in eine CSV-Datei schreiben und dabei die vorhandene Datei überschreiben oder alternativ eine existierende Datei löschen und dann eine neue Datei anlegen.
    Dein Makro macht im Übrigen genau das, was du auch programmiert hast. Es wird eine CSV-Datei geöffnet und deine Daten an die bereits vorhandenen Daten angefügt, nicht überschrieben! Schau dir das Ergebnis mal in einem Editor an, nicht mit Excel!

    Btw.:
    VBA unterstützt keine Dateien im UTF-8 Format.
     
    knobbi38, 3. Oktober 2025
    #6
  7. Leromo Neuer User
    Hallo knobbi38,

    auch dir erstmal ein Danke für deine Mühe und schnelle Antwort.

    Genau, der o.g. Makro macht eigentlich genau alles das das ich möchte, nur eben sieht die Ansicht anders aus.

    In der vorhanden csv Datei sind bereits Werte von A-RL vorhanden.
    Die neuen werden aber leider alle nur in A eingetragen, anstatt in A-RL, wie es eigentlich in Excel kopiert wird.

    Danke auch für deinen Hinweis, dass VBA kein UTF-8 Format unterstützt.
    Dementsprechend kann mein o.g. Makro es auch nicht in diesem Format speichern, richtig?

    Also bleibt mir doch nichts anders übrig, als es weiterhin so einzutragen.

    VG
    Leromo
     
  8. Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen

    Du solltest die Antworten schon genauer lesen. CSV Dateien werden nicht einfach geöffnet, sondern importiert! Als Trennzeichen dann explizit das Komma auswählen.
    Wenn die Daten in ein neues leeres Blatt importiert werden, kopierst du anschließend die Daten so wie du sie brauchst neu zusammen. Anschließend schreibst du das so aufbereitete Blatt wieder in die CSV-Datei zurück, ggf. diese vorher löschen oder den Überschreiben-Modus verwenden.

    Kleiner Tip:
    Mit dt. Regionaleinstellungen wird üblicherweise von Excel als Trennzeichen das Semikolon verwendet und nicht das Komma. Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen *;)*

    Richtig. Brauchst du das UTF-8-Format wirklich oder reicht ANSI? Dateien im UTF-8-Format erfordern eine andere Vorgehensweise.
     
    knobbi38, 3. Oktober 2025
    #8
  9. R J
    R J hat Ahnung
    ...ich würde so vorgehen:
    1.
    Daten aus der csv Datei (ist vermutlich immer die gleiche) mit PQ importieren.
    2.
    Daten aus dem Tabellenblatt, dessen Daten in der CSV angehängt werden sollen mit PQ einlesen.
    ggf. notwendige Anpassungen vornehmen.
    3.
    Daten aus Schritt 2 an Daten aus Schritt 1 anfügen.
    4.
    Ergebnis des letzten Schrittes in ein neues Tabellenblatt laden
    5.
    Händisch oder per Makro dieses Blatt als csv Datei (Kopie) speichern. Das ist die, die beim nächsten Mal als Schritt 1 eingelesen werden soll...
     
  10. Leromo Neuer User
    @knobbi38
    ich weiß nicht, ob wir einander vorbei reden, aber die Daten, die sich in der CSV Dateien befinden, müssen nirgendswo importiert werden.
    Die Dateien die sich in einer xlsx Datei befinden, sollen in der csv Datei kopiert werden.

    Diesen Satz "CSV Dateien werden nicht einfach geöffnet" habe ich nicht verstanden. In deinem ersten Beitrag hast du geschrieben, dass mein Makro genau das macht und zwar, dass eine CSV-Datei geöffnet wird und meine Daten an die bereits vorhandenen Daten angefügt werden. Es soll von einer xlsx Datei in einer csv Datei kopiert werden.

    Aber vielleicht verstehe ich deinen Lösungsansatz nicht. Kann auch sein. Und ja, es soll in einem UTF-8-Format abgespeichert werden.

    @Ralf
    Danke für deine Vorgehensweise, aber ich verstehe da den Punkt 1 nicht. Wo soll ich die csv Dateien importieren? Die befinden sich doch schon bereits in der richtigen Datei.
    Es sollen die nachträglichen Daten aus der xlsx Datei in csv eingefügt werden.
    Werde aber deine Schritte mal durchgehen.
     
  11. Hallo Leromo,

    ich glaube, dir ist nicht bewusst, was genau eine CSV-Datei ist. Wenn du nur Daten an eine CSV-Datei anhängen möchtest, geht das genau so mit deinem Makro. Das setzt aber voraus, daß die Anzahl der Felder in einer CSV-Datei immer konstant ist.
    Wenn das nicht zutrifft, dann mußt du die CSV-Datei importieren, Daten einfügen und wieder abspeichern. Was ist daran jetzt nicht zu verstehen?

    Und das du nicht einfach so eine CSV-Datei mit Excel öffnen kannst/solltest, sollte dir klar sein, das wurde hier schon mehrfach erwähnt. Ob deine Datei richtig erstellt wird, kannst du einfach mit einem Texteditor überprüfen.

    Knobbi38
     
    knobbi38, 3. Oktober 2025
    #11
  12. R J
    R J hat Ahnung
    Zu Frage wo:
    In der Exceldatei, die die Daten enthält, die Du an die bestehende csv Datei anhängen willst.
    Oder in einer neuen Datei, in welcher Du sowohl die csv-Daten als auch die anzuhängenden Daten importierst. Wenn Du dann dort Deine PQ Abfrage(n) erstellt hast, kannst Du die Datei immer wieder nutzen, ohne dass da weiter was gemacht werden muss.
    Ich würde aber die schon bestehende Datei nutzen... Die anzuhängenden Daten müssen aber auch hier erst in und mit PQ geladen werden. Also immer beide Datenqellen in PQ laden, damit PQ sie auch verarbeiten kann...

    Warum, wenn es die Daten doch schon gibt?
    Kurzfassung: Unbekannte Daten können halt nicht verarbeitet werden... Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen *:)* Deshalb...
    Langfassung: Weil Du diese Daten erst einmal laden und ggf. transformieren musst (keine Bange, macht PQ für Dich weitgehend selbständig), um an die anzuhängenden Daten dann die Daten der csv auch anhängen zu können.
    Wie gesagt, das Ergebnis der PQ-Abfrage mit den kompletten Daten beider Datenquellen in ein neues Tabellenblatt laden lassen und dieses Blatt dann als csv speichern.
     
  13. Leromo Neuer User

    Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen

    Hallo zusammen,

    vielen Dank für eure Antworten.
    Ich habe dies mit folgendem Code lösen können:

    Code:
    Sub WerteInCSVEinfügen()
        Dim wsQuelle As Worksheet
        Dim csvDatei As Workbook
        Dim csvPfad As String
        Dim letzteZeileQuelle As Long
        Dim letzteSpalteQuelle As Long
        Dim datenBereich As Range
        Dim zielBlatt As Worksheet
        Dim letzteZeileCSV As Long
        Dim zielRange As Range
        Dim i As Long, j As Long
        
        csvPfad = "C:\Users\Benutzer\Desktop\Excel\Mitarbeiter.csv"
        
        Set wsQuelle = ThisWorkbook.Sheets("Mitarbeiter")
        
        letzteZeileQuelle = wsQuelle.Cells(wsQuelle.Rows.Count, "A").End(xlUp).Row
        If letzteZeileQuelle < 2 Then
            MsgBox "Keine Daten ab A2 gefunden!", vbExclamation
            Exit Sub
        End If
        
        letzteSpalteQuelle = wsQuelle.Cells(2, wsQuelle.Columns.Count).End(xlToLeft).Column
        
        Set datenBereich = wsQuelle.Range(wsQuelle.Cells(2, 1), wsQuelle.Cells(letzteZeileQuelle, letzteSpalteQuelle))
        
        Application.DisplayAlerts = False
        Set csvDatei = Workbooks.Open(Filename:=csvPfad, Local:=True)
        Set zielBlatt = csvDatei.Sheets(1)
        
        If Application.WorksheetFunction.CountA(zielBlatt.Cells) = 0 Then
            letzteZeileCSV = 1
        Else
            letzteZeileCSV = zielBlatt.Cells(zielBlatt.Rows.Count, "A").End(xlUp).Row + 1
        End If
        
        Set zielRange = zielBlatt.Range(zielBlatt.Cells(letzteZeileCSV, 1), zielBlatt.Cells(letzteZeileCSV + datenBereich.Rows.Count - 1, datenBereich.Columns.Count))
        zielRange.Value = datenBereich.Value
        
        For j = 1 To datenBereich.Columns.Count
            zielBlatt.Range(zielBlatt.Cells(letzteZeileCSV, j), zielBlatt.Cells(letzteZeileCSV + datenBereich.Rows.Count - 1, j)).TextToColumns _
                Destination:=zielBlatt.Cells(letzteZeileCSV, j), DataType:=xlDelimited, Comma:=True, TextQualifier:=xlDoubleQuote
        Next j
        
        csvDatei.SaveAs Filename:=csvPfad, FileFormat:=xlCSVUTF8, Local:=True
        
        csvDatei.Close SaveChanges:=False
        Application.DisplayAlerts = True
        
        MsgBox "Daten erfolgreich übertragen und CSV als UTF-8 gespeichert!", vbInformation
    End Sub
    
    Dies tut schon mal das was ich möchte.
    Das einzige, was ich noch heraus finden muss ist, wie ich Prozentzahlen richtig angezeigt bekomme.
    Wenn ich z.B. 80% habe, zeigt er mir in der csv Datei 0,80 an.
    Wenn ich die Einfügeoption "Einfüge" mache, werden mir die Werte angezeigt.
    Nehme ich jedoch die Einfügeoption "Werte", dann leider nicht.

    VG
    Leromo
     
Thema:

Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen

Die Seite wird geladen...
  1. Dynamische Werte in einer geschlossenen csv Arbeitsmappe einfügen - Similar Threads - Dynamische Werte geschlossenen

  2. Spaltenüberschriften mit Werten kombinieren (dynamisch)

    in Microsoft Excel Hilfe
    Spaltenüberschriften mit Werten kombinieren (dynamisch): Hi, vielleicht kann mir jmd helfen. Ich versuche "Spaltenüberschriften mit Werten" zu kombinieren. Aus meiner Sicht ist die Schwierigkeit dabei, dass ich n-Spalten haben kann und jeweils...
  3. Werte aus anderen Arbeitsmappen (dynamisch)

    in Microsoft Excel Hilfe
    Werte aus anderen Arbeitsmappen (dynamisch): Hallo ihr lieben, gibt es eine Möglichkeit ein Ergebnis aus einer nicht geöffneten Mappe zu holen ? Ein statischer Link ist mir klar, benutze ich aktuell auch, funktioniert. Nun wollte ich das...
  4. Ermitteln eines dynamischen Wert um Zielwert zu erreichen

    in Microsoft Excel Hilfe
    Ermitteln eines dynamischen Wert um Zielwert zu erreichen: Hallo zusammen, könnt ihr mir bei folgendem Problem helfen? Wir benötigen ein Diagramm mit einer dynamischen Zielkurve... Wir haben ein Ziel von 60% In Monat 1 schaffen wir 40& In Monat 2...
  5. Dynamische Suche und Ausgabe von Werten

    in Microsoft Excel Hilfe
    Dynamische Suche und Ausgabe von Werten: Hallo liebe Forengemeinde, ich habe eine Excel-Herausforderung, wo ich mich schon schwer tue, die korrekte Überschrift zu finden und somit auch im Netz nicht weiß, wonach ich genau eigentlich...
  6. Mit in Laufzeit erzeugten dynamischen Texboxen Werte vergleichen und einfärben

    in Microsoft Excel Hilfe
    Mit in Laufzeit erzeugten dynamischen Texboxen Werte vergleichen und einfärben: Hallo zusammen, Ich brauche mal eine kleine Nachhilfe im Zusammenhang mit in Laufzeit dynamisch erzeugten TextBoxen. Ich denke da wahrscheinlich in die verkehrte Richtung: Beim Aufruf der...
  7. Formel und fixe Werte in Dropdown Menü

    in Microsoft Excel Hilfe
    Formel und fixe Werte in Dropdown Menü: Hallo zusammen, ich bin verzweifelt auf der Suche nach einer Lösung für folgendes Problem. Vorab: Die Excel Datei wird freigegeben für mehrere Benutzer und VBAs sind somit ausgeschlossen...
  8. Werte unbekannter Spaltenanzahl dynamisch verketten

    in Microsoft Excel Hilfe
    Werte unbekannter Spaltenanzahl dynamisch verketten: Hallo, kann ich mit einer Formel in Spalte A die einzelnen Werte der Spalte B bis Spalte ??? dynamisch verketten und eine # zwischen die Werte schreiben? Problem ist, die mit Werten gefüllte...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden