Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Neueste Zeilen von einem Excel in ein anderes speichern

Forumthread: Neueste Zeilen von einem Excel in ein anderes speichern

Neueste Zeilen von einem Excel in ein anderes speichern
30.12.2024 02:55:13
Alex
Hi,

ich möchte von einer Datei in eine andere immer nur die neuesten Zeilen kopieren

dazu hab ich folgende VBA Code generiert, allerdings kopiert der immer alles in die erste leere Zeile der Zieldatei :(
anhand der MEssagebox sehe ich, dass er die letzen Zeilen richtig erkennt
irgendwie bekomme ich es nicht hin, dass er nur die neuesten Zeilen kopiert

danke für eure Hilfestellung

Sub KopiereNeueZeilen_SharePoint()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow1 As Long, lastRow2 As Long
Dim i As Long

'Notwendige Sheets öffnen
Workbooks.Open "F:\Test2.xlsx"
Workbooks.Open "F:\Test1.xlsm"


' Arbeitsblätter definieren
Set ws1 = Workbooks("Test2.xlsx").Sheets("Daten") ' Das Blatt, das durchsucht wird
Set ws2 = Workbooks("Test1.xlsm").Sheets("Rohdaten") ' Das Blatt, in das kopiert wird

' Letzte Zeile in beiden Blättern bestimmen
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row '
MsgBox lastRow1

lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1).Row
MsgBox lastRow2

' Kopiere nur neue Daten (basierend auf dem Wert in Spalte A)

ws1.Range("A2:C" & lastRow1).Copy ws2.Range("A" & lastRow2)



End Sub
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neueste Zeilen von einem Excel in ein anderes speichern
30.12.2024 03:34:16
emkaes
Hallo,

hiermit kopierst du ja auch den gesamten Datenbereich von A2:CletzteZeile


'...
ws1.Range("A2:C" & lastRow1).Copy ws2.Range("A" & lastRow2)
End Sub


wenn du lediglich die letzte Zeile übertragen willst ( warum eigentlich???) dann so
.......

ws1.cells(lastRow1,1).Resize(,3).Copy ws2.Range("A" & lastRow2)
End Sub


Anzeige
AW: Neueste Zeilen von einem Excel in ein anderes speichern
30.12.2024 06:05:34
Luschi
Hallo Alex,

hier mal meine Variante, gerade bei solchen Kopierfunktionen sollten man sorgfältig arbeiten und im Vba-Editon den Code per F8 schrittweise testen:
Testseite für VBA-Umsetzung nach HTML
[Cc][+][-]


Option Explicit

Sub KopiereNeueZeilen_SharePoint()
  Dim wb1 As Workbook, wb2 As Workbook, _

  ws1 As Worksheet, ws2 As Worksheet, rngCopy As Range
  Dim lastRow1 As Long, lastRow2 As Long, i As Long

  ' Definition der Arbeitsmappen beim Auftraggeber
  ' hier die Kommentarzeichen löschen!!!
  ' Set wb1 = Workbooks.Open("F:\Test2.xlsx", ReadOnly:=True)  'schreibgeschützt
  ' Set wb2 = Workbooks.Open("F:\Test1.xlsm", ReadOnly:=False) 'zum schreiben

  ' Definition der Arbeitsmappen beim Tester
  ' hier die Kommentarzeichen setzen oder Zeilen löschen!!!
  Set wb1 = ThisWorkbook
  Set wb2 = ThisWorkbook
  ' -------------------------

  ' Arbeitsblätter definieren
  Set ws1 = wb1.Worksheets("Daten")    ' Das Blatt, das durchsucht wird
  Set ws2 = wb2.Worksheets("Rohdaten")    ' Das Blatt, in das kopiert wird

  ' Letzte Zeile in beiden Blättern bestimmen
  lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
  lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
  Debug.Print lastRow1, lastRow2
  Stop
  If lastRow1 = lastRow2 Then
     MsgBox "Es muß nix kopiert werden" & vbCrLf & _
     "lastRow2 (Ziel) ist GLEICH lastRow1 (Quelle)"
  ElseIf lastRow1 < lastRow2 Then
     MsgBox "Fehlermeldung lastRow2 (Ziel) ist GRÖßER lastRow1 (Quelle)"
  ElseIf lastRow1 > lastRow2 Then
     Debug.Print ws1.Range("A" & (lastRow2 + 1)).Address
     ' zur Info: dieser Bereich wird kopiert
     Debug.Print ws1.Range("A" & (lastRow2 + 1)).Resize(lastRow1 - lastRow2, 3).Address     ' '.Copy _
                  ws2.Range("A" & lastRow2).address
     ' Kopiere nur neue Daten (basierend auf dem Wert in Spalte A)
     Set rngCopy = ws1.Range("A" & (lastRow2 + 1)).Resize(lastRow1 - lastRow2, 3)
     rngCopy.Copy ws2.Range("A" & (lastRow2 + 1))
  Else
     MsgBox "Fehlermeldung: nix kopiert - aber WARUM"
  End If

  Set ws1 = Nothing: Set ws2 = Nothing: Set rngCopy = Nothing
End Sub

viele Grüße von
L u s c h i aus klein-Paris
Anzeige
AW: Neueste Zeilen von einem Excel in ein anderes speichern
31.12.2024 00:49:26
Alex
Hi Luschi,

vielen dank, das ist die Lösung
ich habe eh mit F8 abgearbeitet, aber bin eben nicht auf die Kopielösung drauf gekommen.

mal schauen ob ich das mit Spalten selber zusammen bekommen, denn da brauche ich auch etwas in einem anderen Sheet :)

vielen lieben Dank für Deine Mühe

guten Rutsch
Anzeige
AW: Neueste Zeilen von einem Excel in ein anderes speichern
30.12.2024 09:48:58
ralf_b
die Kollegen haben es so verstanden das du nur die letzte Zeile kopieren möchtest.
Ich denke es sind durchaus mehr. Du hast vergessen uns mitzuteilen. was genau macht denn neue Zeilen aus?
Der letzte Kommentar im Code sagt aus das dies mit den Werten der Spalte A zu tun hat.
Woran erkennt man die zu kopierenden Werte? Dein Code erkennt nur Bereichsgrenzen in den jeweiligen Blättern. Mehr nicht.
Anzeige
AW: Neueste Zeilen von einem Excel in ein anderes speichern
31.12.2024 00:55:27
alex
Sorry dachte mit dem Titel neueste Zeilen, ist klar, dass es mehr als eine sein kann

da die Datenblätter grundsätzlich gleich aufgebaut sind, geht es in dem Fall wirklich nur darum, die Zeilen abzuzählen und die fehlenden rüber zu kopieren in mein Sheet.
Dort arbeite ich dann mit dieser Datenbasis selbständig in einer anderen Struktur weiter, indem ich die kopierten werte als Rohdaten heranziehe.

Die Lösung von Luschi funktioniert daher super, hab es mit verschiedenen Szenarien getestet und es funktioniert so wie ich es benötige

Aber danke für Deinen Hinweis, der absolut gerechtfertigt ist

lg
Anzeige
AW: Eventuell...
31.12.2024 00:58:19
alex
Hi Case,

ja das hab ich auch schon überlegt, aber ich möchte endlich meine VBA Kenntnisse verbessern und daher rumprobieren und Lösungen suchen.
Power Query und Power BI nutze ich eh laufend in anderen Projekten

danke aber für deinen Input und anderen Lösungsansatz

lg
alex
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige