Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA jede Zeile in neue Datei kopieren

VBA jede Zeile in neue Datei kopieren
08.04.2021 19:19:43
wossawog
Hallo zusammen,
leider bin ich ein ziemlicher noob in VBA und bräuchte eure Hilfe. Ich habe eine Datei mit Mitarbeiterdaten. In A1:X1 ist der Header, darunter stehen die Daten. Also pro Zeile ein neuer Mitarbeiter. Nun habe ich im gleichen Ordner eine andere Datei die für eine Befragung an die Mitarbeiter geschickt werden soll. Ich brauche jetzt ein VBA Makro, dass A2:X2 kopiert, die andere Datei öffnet und dann dort in A1:X1 einfügt. Dann soll diese Datei gespeichert werden und den Namen des Werts in Zelle X1 haben. Das selbe soll dann in einer Schleife für die nächsten Zeilen gemacht werden.
Ich habe einen Code geschrieben der es manuell für die ersten beiden Zeilen macht, aber für _ einen Loop bin ich zu blöd.

Sub Daten_Kopieren()
Dim wbStart, wbZiel As Workbook
Dim strPath As String
Dim cell As Range
strPath = ActiveWorkbook.Path
Application.ScreenUpdating = False
Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\Users\Tool\Survey.xlsx")
wbStart.Sheets("Finale_Liste").Range("A2:X2").Copy Destination:=wbZiel.Sheets("Arbeitsblatt" _
).Range("A1:X1")
wbZiel.SaveAs Filename:=strPath & "\" & Range("X1")
wbStart.Sheets("Finale_Liste").Range("A3:X3").Copy Destination:=wbZiel.Sheets("Arbeitsblatt" _
).Range("A1:X1")
wbZiel.SaveAs Filename:=strPath & "\" & Range("X1")
Application.ScreenUpdating = True
MsgBox "Fertig"
End Sub

Da die beiden Dateien zwar im gleichen Ordner bleiben, der Pfad sich aber ändern wird, bräuchte ich auch eine andere möglichkeit den Pfad von wbZiel zu definieren.
Ich bin mittlerweile echt am verzweifeln, falls mir jemand helfen kann wäre ich super dankbar.
Prost!
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA jede Zeile in neue Datei kopieren
08.04.2021 20:38:49
Werner
Hallo,
Teste mal:
  • 
    Sub Daten_Kopieren()
    Dim wbZiel As Workbook, strPath As String, i As Long
    strPath = ActiveWorkbook.Path
    Application.ScreenUpdating = False
    Set wbZiel = Workbooks.Open("C:\Users\Tool\Survey.xlsx")
    With ThisWorkbook.Worksheets("Finale_Liste")
    For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
    .Cells(i, "A").Resize(, 24).Copy _
    wbZiel.Sheets("Arbeitsblatt").Range("A1")
    wbZiel.SaveAs Filename:=strPath & "\" & .Cells(i, "X")
    Next i
    End With
    Set wbZiel = Nothing
    MsgBox "Fertig"
    End Sub
    

  • Gruß Werner
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA: Jede Zeile in eine neue Datei kopieren


    Schritt-für-Schritt-Anleitung

    Um ein Excel Makro zu erstellen, das jede Zeile in eine neue Datei kopiert, folge diesen Schritten:

    1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

    2. Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.

    3. Kopiere den folgenden Code in das Modul:

      Sub Daten_Kopieren()
          Dim wbZiel As Workbook
          Dim strPath As String
          Dim i As Long
      
          strPath = ActiveWorkbook.Path
          Application.ScreenUpdating = False
          Set wbZiel = Workbooks.Open("C:\Users\Tool\Survey.xlsx")
      
          With ThisWorkbook.Worksheets("Finale_Liste")
              For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
                  .Cells(i, "A").Resize(, 24).Copy wbZiel.Sheets("Arbeitsblatt").Range("A1")
                  wbZiel.SaveAs Filename:=strPath & "\" & .Cells(i, "X")
              Next i
          End With
      
          Set wbZiel = Nothing
          Application.ScreenUpdating = True
          MsgBox "Fertig"
      End Sub
    4. Ändere den Pfad "C:\Users\Tool\Survey.xlsx" entsprechend deinem Dateipfad.

    5. Schließe den VBA-Editor und führe das Makro aus.


    Häufige Fehler und Lösungen

    • Fehler: "Datei nicht gefunden"
      Lösung: Überprüfe den Pfad zur Datei Survey.xlsx. Stelle sicher, dass die Datei existiert und der Pfad korrekt ist.

    • Fehler: "Zugriff verweigert"
      Lösung: Stelle sicher, dass die Datei nicht schreibgeschützt ist oder von einem anderen Programm verwendet wird.

    • Fehler: "Objektvariable nicht festgelegt"
      Lösung: Überprüfe, ob das Arbeitsblatt Finale_Liste existiert und korrekt benannt ist.


    Alternative Methoden

    Wenn du eine andere Methode bevorzugst, kannst du auch die Excel VBA Zeile kopieren Funktion nutzen, um die Daten manuell zu übertragen. Eine weitere Möglichkeit ist die Verwendung von Excel-Formeln oder Power Query, um Daten zwischen Dateien zu verknüpfen, anstatt sie physisch zu kopieren.


    Praktische Beispiele

    Hier ist ein einfaches Beispiel, wie du das Makro anpassen kannst, um nur bestimmte Spalten zu kopieren. Angenommen, du möchtest nur die Spalten A und B kopieren:

    .Cells(i, "A").Resize(, 2).Copy wbZiel.Sheets("Arbeitsblatt").Range("A1")

    Dieses Beispiel zeigt, wie du mit vba zeile kopieren spezifische Daten in eine andere Datei übertragen kannst.


    Tipps für Profis

    • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
    • Nutze Application.DisplayAlerts = False, um Warnmeldungen beim Speichern zu unterdrücken, wenn du die Datei speicherst.
    • Überlege, ob du eine Fehlerroutine einbauen möchtest, um eine bessere Fehlerbehandlung zu gewährleisten.

    FAQ: Häufige Fragen

    1. Kann ich das Makro für mehrere Dateien gleichzeitig verwenden?
    Ja, du kannst die Schleife erweitern, um mehrere Ziel-Dateien zu bearbeiten, indem du den Pfad in der Schleife anpasst.

    2. Wie kann ich den Zellenbereich anpassen?
    Ändere die .Cells(i, "A").Resize(, 24)-Zeile, um die Anzahl der zu kopierenden Spalten zu ändern, z.B. .Resize(, 10) für 10 Spalten.

    3. Was mache ich, wenn ich die Datei nicht speichern kann?
    Überprüfe die Berechtigungen des Ordners, in dem du speichern möchtest, und stelle sicher, dass die Datei nicht geöffnet ist oder von einem anderen Programm verwendet wird.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige