Clever-Excel-Forum

Normale Version: VBA Makro Kopieren in eine neue Datei
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich bin leider ein Anfänger was Makro angeht. Ich hoffe es kann mir wer bei meinem Problem helfen.
Ich bräuchte ein Makro für folgendes Problem:

Ich habe zwei Dateien und beide heißen immer gleich und liegen imme am gleichen Ort.
Ich möchte jetzt aus der ersten Datei "Datei1" und dort aus dem Reiter "Reiter1" den Bereich A20 bis D50 in die zweite Datei "Datei2" in den Reiter "Reiter3" in den Bereich A bis D immer ans Ende stellen. Zum Schlus soll sich die zweite Datei weider schließen.
Ich kriege das irgendwie auch mit den Aufzeichnungen nicht hin. Ich müsste das Einfügen als Wert haben, da die Formel nicht übernommen werden sollen.

Vielen Dank im Voraus und Gruß aus dem Norden.
Hallo, :19:

so mit Makro in Datei1: :21:

Code:
Option Explicit
Public Sub Main()
    Dim wkbBook As Workbook
    Set wkbBook = Workbooks.Open("C:\Temp\Datei2.xlsb")
    wkbBook.Worksheets("Reiter3").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(50, 4).Value = ThisWorkbook.Worksheets("Reiter1").Range("A1:D50").Value
    wkbBook.Close True
    Set wkbBook = Nothing
End Sub

Pfad- und Dateiname und eventuell Tabellenblattnamen anpassen.
Hallo Case,

danke für die schnelle Antwort. ich habe das Makro so jetzt angepasst. Leider funktioniert es nicht so richtig. Wenn ich das Makro ausführe wird ein Teil der Information(Spalte A:D) oebn links und der Rest unten rechts in die Zweite Datei kopiert.
Heute hatte ich zum Beispiel nur 3 Datenätze, daher wäre der heutige Bereich A20:D23. Manchmal ist das halt mehr und manchmal weniger. Kann es daran liegen? Leider weiß ich nicht woran es liegt. Habe schon einiges versucht. 
DAs öffnen, schließen und kopieren an sich klappt. Nur das die DAten halt komplett getrennt werden.

Vielen Dank für die Hilfe.
Hallo, :19:

dann probiere es mal so: :21:

Code:
Option Explicit
Public Sub Main()
    Dim wkbBook As Workbook
    Dim lngTMP As Long
    Application.ScreenUpdating = False
    Set wkbBook = Workbooks.Open("C:\Temp\Datei2.xlsb")
    With ThisWorkbook.Worksheets("Reiter1")
        lngTMP = .Cells(.Rows.Count, 1).End(xlUp).Row
        wkbBook.Worksheets("Reiter3").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(lngTMP - 19, 4).Value = .Range("A20:D20" & lngTMP - 19).Value
    End With
    wkbBook.Close True
    Application.ScreenUpdating = True
    Set wkbBook = Nothing
End Sub
Hi,

vielleicht so:
Public Sub Main()
With Workbooks.Open("C:\Temp\Datei2.xlsb")
.Worksheets("Reiter3").Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(30, 4).Value = ThisWorkbook.Worksheets("Reiter1").Range("A20:D50").Value
.Close True
End With
End Sub
Gruß Uwe