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

Forumthread: Zeilen kopieren und in andere Datei einfügen

Zeilen kopieren und in andere Datei einfügen
21.02.2008 09:06:10
Stephan
Hallo zusammen,
ich bin VBA-Anfänger und habe folgendes Problem:
Ich habe zwei Excel-Dateien (Vorlage-Datei und Zieldatei). In der Vorlage-Datei werden regelmäßig von Zeile 7 bis 18 und Zeile 21 bis 37 Datensätze eingepflegt. Diese Datensätze sollen nun mittels Makro in die nächste freie Zeile der Zieldatei (umfasst mittlerweile über 800 Zeilen) übernommen werden. Die Datensätze in der Vorlage-Datei werden anschließend wieder überschrieben.
Mit welchem Makro kann man so etwas umsetzen? Vielen Dank schon mal im Voraus für Eure Unterstützung!! Gruß, Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 09:14:00
haw
Hallo Stephan,
ein Beispiel:

Sub BereichKopieren()
Dim ws As Worksheet, wsZ As Worksheet, efz%
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Ziletabelle")
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows("7:18").Copy wsZ.Cells(efz, 1)
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows("21:37").Copy wsZ.Cells(efz, 1)
End Sub


wobei hier auch die Zieldatei offen sein muß
Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 09:41:00
Stephan
Hallo haw,
zunächst einmal vielen Dank für die schnelle Hilfe. Werde es sofort ausprobieren und mich anschließend melden.....
Gruß,
Stephan

AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 10:45:48
Stephan
Hallo haw,
Super!! Funktioniert einwandfrei! Vielen Dank nochmals!!
Eine Sache hätte ich noch: In den vorhin beschriebenen Zeilen der Vorlage-Datei ist nicht immer ein Datensatz enthalten. Meistens befindet sich in Zeile 7-10 und 21-24 ein Datensatz.
Kann man es irgendwie verhindern, dass er dann die leeren Zeilen mitkopiert, also nur die Zeilen kopiert, die auch Daten enthalten? Vielen Dank jetzt schon mal!!
Gruß, Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 11:29:46
haw
Hallo Stephan,
nachdem ich nicht weiss wo (in welchen Spalten) deine Daten stehen können, wird die ganze Zeile nach einem Inhalt überprüft, wird keiner gefunden, wird die Zeile nicht kopiert

Sub BereichKopieren()
Dim ws As Worksheet, wsZ As Worksheet, efz%, i%
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Zieltabelle")
For i = 7 To 18
If ws.Cells(i, 1).End(xlToRight).Column 


Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 12:00:41
Stephan
Hallo haw,
Danke für die schnelle Antwort!!
Meine Daten liegen im Bereich A6-P18 (ich hatte vorhin A7 geschrieben, hab mich leider vertan. Hab`s aber im Script schon abgeändert) und im Bereich A21 bis P37. Welchen Passus muss ich dann in deinem eben übersandten Script ändern?
Gruß,
Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 12:36:00
Stephan
Hi haw,
ich Dussel habe gerade festgestellt, dass in den "Leerzeilen" meiner Vorlage-Datei Formeln hinterlegt sind. Diese hat er dann natürlich mitkopiert. Lässt sich das umgehen? Vielen Dank!
Gruß,
Stephan

AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 17:29:57
HAW
Hallo Stephan,
welcher Datentyp liegt vor? Zahlen oder Text?
Bei Zahlen ist es einfacher, bei Text müsste man alle Zellen durchlaufen
Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 18:01:07
HAW
Hallo Stephan,
hier ein Versuch

Sub BereichKopieren()
Dim ws As Worksheet, wsZ As Worksheet, efz%, i%, leer As Boolean
Dim c As Range, Bereich As Range
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Zieltabelle")
For i = 6 To 18
Set Bereich = ws.Range("A" & i & ":P" & i)
leer = True
For Each c In Bereich
If c.Value  0 Then leer = False
Exit For
Next c
If leer = False Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy wsZ.Cells(efz, 1)
End If
Next i
For i = 21 To 37
Set Bereich = ws.Range("A" & i & ":P" & i)
leer = True
For Each c In Bereich
If c.Value  0 Then leer = False
Exit For
Next c
If leer = False Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy wsZ.Cells(efz, 1)
End If
Next i
End Sub


Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 20:13:03
Stephan
Hallo haw,
vielen Dank mal wieder für deine Bemühungen!! Ich werde es direkt morgen früh ausprobieren und mich umgehend wieder melden. Als Datentyp habe ich im Datenbereich Zahlen und Text (Menge, Artikelbezeichnung, Artikel-Nr. etc.). Ich wünsche noch einen schönen Abend! Danke nochmals!!
Gruß, Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
21.02.2008 20:59:00
HAW
Hallo Stephan,
am einfachsten wäre es, wenn man sagen könnte, z.B. in der Spalte P steht, wenn die Zeile nicht leer ist, immer was drinnen. Dann bräuchte man nur die Spalte P überprüfen.
Gruß
Heinz

AW: Zeilen kopieren und in andere Datei einfügen
22.02.2008 08:35:25
Stephan
Guten morgen haw,
habe Dein Script ausprobiert und er bringt den Datensatz auch tadellos rüber. Allerdings kopiert er die Formeln (der s. g. "Leerzeilen") noch mit. Wenn ich alle Formeln nach erfolgter Dateneingabe in meiner Vorlagedatei entferne, setzt er mir natürlich alle Datensätze sauber untereinander weg. Das ist also nicht das große Problem. Wäre natürlich trotzdem schön, wenn sich das irgendwie lösen könnte.
Jetzt ist es so, dass in meiner Zieltabelle in den Spalten Q, R, S, T und U noch Zellen mit Formeln hinterlegt sind und diese durch den Kopiervorgang überschrieben werden. D. h. er kopiert die kompletten Zeilen 6, 7, 8 usw. Die Spalten O und P in meiner Vorlage-Datei sind manuelle Einträge, d. h. ohne Formeln hinterlegt.
Wie immer an dieser Stelle ein großes DANKESCHÖN für Deine bisherigen Bemühungen!!
Gruß, Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
22.02.2008 10:09:59
haw
Hallo Stephan,
hier ein weiterer Versuch

Sub BereichKopieren()
Dim ws As Worksheet, wsZ As Worksheet, efz%, i%, leer As Boolean
Dim c As Range, Bereich As Range
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Zieltabelle")
For i = 6 To 18
Set Bereich = ws.Range("A" & i & ":P" & i)
leer = True
For Each c In Bereich
If c.Value  "0" Then leer = False
Exit For
Next c
If leer = False Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy wsZ.Cells(efz, 1)
End If
Next i
For i = 21 To 37
Set Bereich = ws.Range("A" & i & ":P" & i)
leer = True
For Each c In Bereich
If c.Value  "0" Then leer = False
Exit For
Next c
If leer = False Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy wsZ.Cells(efz, 1)
End If
Next i
End Sub


sonst könntest du einmal die Ausgangstabelle hochladen, dann könnte ich genau sehen, was da drin steht.
Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
22.02.2008 12:09:00
Stephan
Hallo haw,
hier der Link für meine Vorlagedatei:
https://www.herber.de/bbs/user/50111.xls
Probiere jetzt Dein neues Script aus und melde mich wieder. Danke!
Gruß,
Stephan

AW: Zeilen kopieren und in andere Datei einfügen
22.02.2008 12:23:00
Stephan
Hi,
Daten werden ohne Probleme kopiert, allerdings leider immer noch mit den Formeln in den "Leerzellen". Und auch die entsprechenden Zellen in den Spalten Q, R, S, T und V in der Zieldatei werden überschrieben. Ich hoffe, die eben hochgeladene Vorlagedatei kann dir weiterhelfen und wenn nicht, ist das auch nicht weiter tragisch. VIELEN DANK!!
Gruß, Stephan

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
22.02.2008 17:29:00
HAW
Hallo Stephan,
nächster Versuch. Ich gehe davon aus, dass wenn Daten in eienr zeile vorhanden sind, immer auch die Kalenderwoche in der Spalte A vorhanden ist, d.h. ich überprüfe nur die Spalte A.

Sub BereichKopieren()
Dim ws As Worksheet, wsZ As Worksheet, efz%, i%, leer As Boolean
Dim c As Range, Bereich As Range
Set ws = ThisWorkbook.Worksheets("Ausdruck")
Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Zieltabelle")
For i = 6 To 18
If ws.Cells(i, 1).Value  0 Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy
wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteValues
wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End If
Next i
For i = 21 To 37
If ws.Cells(i, 1).Value  0 Then
efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Rows(i).Copy
wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteValues
wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End If
Next i
End Sub


Gruß
Heinz

Anzeige
AW: Zeilen kopieren und in andere Datei einfügen
24.02.2008 19:12:38
Stephan
Hallo Haw,
zunächst ein "Danke Schön" für das Script! Werde es morgen früh direkt ausprobieren. Ich wünsche Dir noch einen schönen Sonntag!!
Gruß, Stephan

AW: Zeilen kopieren und in andere Datei einfügen
25.02.2008 08:10:00
Stephan
Hallo haw,
ich hoffe, du hast ein angenehmes Wochenende gehabt.
ich habe gerade das Script ausprobiert. Als Test habe ich in Zeile 6 und 21 einen Datensatz eingegeben und kopiert. Die Daten werden werden auch übertragen, aber er kopiert die dazwischen liegenden Leerzeilen wieder mit, diesmal allerdings ohne Formeln. Er schreibt mir die Datensätze nicht untereinander weg, sondern fügt die Leerzeilen halt mit ein.
Und in den Spalten Q, R, S, T, U der Zieldatei löscht er die Formeln und die Formatierung in allen kopierten Zellen. D. h., er kopiert die ganze Zeile.
Gruß, Stephan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen kopieren und in andere Datei einfügen


Schritt-für-Schritt-Anleitung

Um Daten von einer Vorlage-Datei in eine Zieldatei zu kopieren, kannst Du das folgende VBA-Makro verwenden. Dieses Skript kopiert nur die Zeilen mit Daten und ignoriert leere Zeilen.

  1. Öffne Deine Vorlage-Datei und die Zieldatei in Excel.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Füge den folgenden Code in das Modul ein:
Sub BereichKopieren()
    Dim ws As Worksheet, wsZ As Worksheet, efz As Long, i As Long, leer As Boolean
    Dim c As Range, Bereich As Range
    Set ws = ThisWorkbook.Worksheets("Tabelle1") ' Vorlage-Datei
    Set wsZ = Workbooks("Zieldatei.xls").Worksheets("Zieltabelle") ' Zieldatei

    For i = 6 To 18
        Set Bereich = ws.Range("A" & i & ":P" & i)
        leer = True
        For Each c In Bereich
            If c.Value <> "" Then leer = False: Exit For
        Next c
        If leer = False Then
            efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
            ws.Rows(i).Copy
            wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
        End If
    Next i

    For i = 21 To 37
        Set Bereich = ws.Range("A" & i & ":P" & i)
        leer = True
        For Each c In Bereich
            If c.Value <> "" Then leer = False: Exit For
        Next c
        If leer = False Then
            efz = wsZ.Cells(Rows.Count, 1).End(xlUp).Row + 1
            ws.Rows(i).Copy
            wsZ.Cells(efz, 1).PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
        End If
    Next i
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, um die gewünschten Daten zu kopieren.

Häufige Fehler und Lösungen

Problem: Das Makro kopiert auch leere Zeilen.
Lösung: Stelle sicher, dass der Code die leeren Zellen korrekt überprüft. Der obige Code berücksichtigt nur nicht leere Zellen.

Problem: Formeln werden mitkopiert.
Lösung: Verwende PasteSpecial mit xlPasteValues, um nur die Werte ohne Formeln zu kopieren.


Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du die Daten auch manuell kopieren:

  1. Markiere die gewünschten Zeilen in der Vorlage-Datei.
  2. Drücke STRG + C, um zu kopieren.
  3. Wechsle zur Zieldatei und wähle die erste leere Zeile aus.
  4. Drücke STRG + V, um die Daten einzufügen.

Diese Methode ist einfach, aber weniger effizient, insbesondere bei großen Datenmengen.


Praktische Beispiele

Nehmen wir an, Du hast in der Vorlage-Datei folgende Daten:

A B C
1 Artikel Menge
2 Apfel 10
3
4 Banane 15

Mit dem oben genannten Makro wird nur die Zeile mit den Daten für "Apfel" und "Banane" in die Zieldatei übertragen.


Tipps für Profis

  • Nutze If Not IsEmpty(c.Value) anstelle von If c.Value <> "", um sicherzustellen, dass Du auch Zellen mit nur Leerzeichen ignorierst.
  • Setze die Option Application.ScreenUpdating = False, bevor das Makro läuft, und auf True, nachdem es abgeschlossen ist, um die Performance zu verbessern.
  • Experimentiere mit PasteSpecial-Optionen, um nur Formatierungen oder nur Werte zu kopieren.

FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um andere Bereiche zu kopieren?
Ja, ändere einfach die Zeilen- und Spaltennummern im Skript, um andere Bereiche zu berücksichtigen.

2. Was passiert, wenn die Zieldatei nicht geöffnet ist?
Das Makro wird einen Fehler zurückgeben. Stelle sicher, dass die Zieldatei geöffnet ist, bevor Du das Makro ausführst.

3. Wie kann ich sicherstellen, dass nur die ersten 800 Zeilen kopiert werden?
Füge eine Bedingung im Makro hinzu, um die Anzahl der kopierten Zeilen zu begrenzen.

4. Kann ich das Makro so ändern, dass es auch Zellen mit Formeln ignoriert?
Ja, Du kannst im Code eine weitere Bedingung hinzufügen, um sicherzustellen, dass Formeln nicht kopiert werden.

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