VBA Werte in nächste freie Zeile einfügen
#1
Hallo zusammen,

bis jetzt nutze ich einen VBA Code um Werte aus einer Datei an einer bestimmten Stelle in einer anderen Arbeitsmappe einzufügen.
Nun möchte ich aber die Werte in dwer nächsten freien Zeile einfügen. Was muss an meinem Code geändert werden?

Code:
Sub NVReporteholen()
'
' NVReporteholen Makro
' NV Werte aus der Reportdatei holen
'

'
    Workbooks.Open Filename:= _
        "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
    Sheets("RP_DD").Select
    Range("V5:AA52").Select
    Selection.Copy
    Windows("Vergleich 2025.xlsb").Activate
    Sheets("Report 55").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L23").Select
    Windows("Reporte.xlsb").Activate
    Range("R56").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    ActiveWindow.Close
    Range("L26").Select
End Sub

Danke für eure tatkräftige Unterstützung.
Antworten Top
#2
Hi,

so:

Code:
Sub NVReporteholen()
'
' NVReporteholen Makro
' NV Werte aus der Reportdatei holen
'

'
    Workbooks.Open Filename:= _
        "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
    Sheets("RP_DD").Select
    Range("V5:AA52").Select
    Selection.Copy
    Windows("Vergleich 2025.xlsb").Activate
    Sheets("Report 55").Select
    Range("B" & Cells(Rows.Count, 2).End(xlUp).Row + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L23").Select
    Windows("Reporte.xlsb").Activate
    Range("R56").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    ActiveWindow.Close
    Range("L26").Select
End Sub

BR, Alexandra
Antworten Top
#3
Hallo

Welche Datei ist die Quelle und Welche die Zieldatei?


LG UweD
Antworten Top
#4
Hi Uwe,

die Quelle ist "Reporte" und die Zieldatei ist "Vergleich 2025".
Ich habe da etwas falsch ausgedrückt.
Die Daten sollen in Spalte C ab der ersten freien Zelle eingefügt werden.

Gruß Ole
Antworten Top
#5
...dann so:

Code:
Sub NVReporteholen()
'
' NVReporteholen Makro
' NV Werte aus der Reportdatei holen
'

'
    Workbooks.Open Filename:= _
        "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
    Sheets("RP_DD").Select
    Range("V5:AA52").Select
    Selection.Copy
    Windows("Vergleich 2025.xlsb").Activate
    Sheets("Report 55").Select
    Range("B" & Cells(Rows.Count, 3).End(xlUp).Row + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("L23").Select
    Windows("Reporte.xlsb").Activate
    Range("R56").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    ActiveWindow.Close
    Range("L26").Select
End Sub

LG, Alexandra
Antworten Top
#6
Hallo

so sollte es Ohne umständliche Sheets().Selects gehen.  Noch kürzer ist der 2. Code, Ohne Activate!

mfg Gast 123

Code:
Sub NVReporteholen()
    Workbooks.Open Filename:= _
        "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
    'Quelldaten kopieren
    Sheets("RP_DD").Range("V5:AA52").Copy
    Windows("Vergleich 2025.xlsb").Activate
    'in Zielsheet einfügen  Ohne Sheet Select
    Sheets("Report 55").Range("B2").PasteSpecial Paste:=xlPasteValues, Transpose:=False
    Workbooks("Reporte.xlsb").Close savechanges:=False
    Application.CutCopyMode = False
End Sub

Code:
Sub NVReporteholen()
    Workbooks.Open Filename:= _
        "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
    'Quelldaten kopieren
    Sheets("RP_DD").Range("V5:AA52").Copy
    'in Zielsheet einfügen Ohne Activate !!
    Workbooks("Vergleich 2025.xlsb").Sheets("Report 55") _
     .Range("B2").PasteSpecial Paste:=xlPasteValues
    Workbooks("Reporte.xlsb").Close savechanges:=False
    Application.CutCopyMode = False
End Sub
Antworten Top
#7
Hallo nochmal

Ich gehe davon aus, das das Makro in der Zieldatei liegt..


Ohne Select, Activate und copy /paste

Code:
Sub NVReporteholen()
    Dim Datei As String, LR As Long
    Dim WBQ As Workbook, RNGQ As Range
    Dim TBZ As Worksheet, RNGZ As Range
   
    'Quelldatei
    Datei = "F:\Daten\Partner\Daten\2025\Reporte.xlsb"
   
    'Zielblatt
    Set TBZ = ThisWorkbook.Sheets("Report 55")
   
    LR = TBZ.Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes

    Set RNGZ = TBZ.Cells(LR + 1, 2) 'Zielzelle
   
    'Quelle öffnen
    Workbooks.Open Filename:=Datei
    Set WBQ = ActiveWorkbook
    Set RNGQ = WBQ.Sheets("RP_DD").Range("V5:AA52")
   
    'Übertrage Werte aus QuellBereich zu Ziel
    RNGZ.Resize(RNGQ.Rows.Count, RNGQ.Columns.Count).Value = RNGQ.Value

    WBQ.Close False 'schließen ohne speichern
   
End Sub

LG UweD
Antworten Top
#8
Hi Alexandra,

leider kommt die Fehlermeldung

"Objekt erforderlich" bei der Code-Zeile:

Range("B" & Cells(Row.Count, 3).End(xlUp).Row + 1).Select

:( 

Gruß Ole
Antworten Top
#9
Nachtrag   Pardon, da war ich zu voreilig, habe übersehen das nach Lastzell zum anfügen gesucht wird.
Dafür ist der Code von Alexandra schon richtig, Hut ab.  Das könnte evtl. noch verbessert werden.
    Sheets("RP_DD").Range("V5:AA52").Copy

Korrektur    Cells(Row.Count, 3).     mach bitte aus der 3 eine 2.  Index 3 ist die Spalte C, nicht B!
Antworten Top
#10
Hallo Ole,

das heißt nicht row.count sondern rows.count. ;)

LG, Alexandra
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste