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

VBA Copy & Paste Mappenübergreifend

Forumthread: VBA Copy & Paste Mappenübergreifend

VBA Copy & Paste Mappenübergreifend
03.04.2019 09:40:41
Frank_S
Als bisher nur stiller Mitleser und Nutzer, habe ich nun selbst mal eine Frage.
Ich möchte abends beim Schließen einer Mappe (mit div Userformen), die tagsüber eingegebenen Daten aus dieser Mappe kopieren und in eine Art Sammelmappe einfügen.
Aus meinen Recherchen hier und im Internet weiß ich, dass man beim Benutzen von .Cells immer exakt reverenzieren muss.
Das habe ich (denke ich wenigstens) ausreichend getan. Trotzdem gibt es Fehler.
Anbei der betreffende Codeschnipsel. Die Zielmappe heißt Protokolle.xlsx und befindet sich in _
einem Unterordner der Quellmappe.

Sub Export()
Dim erste_freie_Zeile_source As Integer
Dim erste_freie_Zeile_target As Integer
Dim BlattZiel As Worksheet
Dim BlattQuelle As Worksheet
If IsWorkbookOpen("Protokolle.xlsx") Then
'MsgBox "OFFEN"
Else
'MsgBox "Nicht offen"
Workbooks.Open ThisWorkbook.Path & "\Protokolle\Protokolle.xlsx"
End If
Set BlattQuelle = ThisWorkbook.Worksheets("tabAuswertung")
Set BlattZiel = Workbooks("Protokolle.xlsx").Worksheets("tabAuswertung")
erste_freie_Zeile_target = BlattZiel.Cells(Rows.Count, 2).End(xlUp).Row + 1
erste_freie_Zeile_source = BlattQuelle.Cells(Rows.Count, 2).End(xlUp).Row
With BlattQuelle
.Range("A3", Cells(erste_freie_Zeile_source, 59)).Copy Destination:=BlattZiel.Range( _
BlattZiel.Cells(erste_freie_Zeile_target), 1)
End With
Workbooks("Protokolle.xlsx").Save
Workbooks("Protokolle.xlsx").Close True
ThisWorkbook.Save
End Sub

Die Zeile zwischen With und End With produziert Fehler 1004.
Für Hilde wäre ich sehr dankebar.
Frank S.
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 09:57:37
Torsten
Hi Frank,
probier mal

Dim letzte_Zeile_source as Integer
With BlattQuelle
letzte_Zeile_source = .Cells(Rows.Count, 2).End(xlUp).Row
.Range("A3:" & "BG" & letzte_Zeile_source).Copy Destination:=BlattZiel.Cells( _
erste_freie_Zeile_target), 1)
End With
Gruss Torsten
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 10:43:25
Frank_S
https://www.herber.de/bbs/user/128876.jpg
Hallo Torsten,
vielen Dank.
Doch leider produziert dein Code trotz Namensanpassung, einen Syntaxfehler.Irgendwo schein eine Klammer zu fehlen. Habe Klammern gezählt und an diversen Stellen eingefügt. Fehler bleibt.
Gruß, Frank
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 10:49:07
Daniel
Hallo Frank,
du musst das schon genau kopieren, die Zeilen müssen untereinander stehen. Da du letzte_Zeile_source scshon darüber befüllst, kannst du es hier auch weglassen.
With BlattQuelle
.Range("A3:BG" & letzte_Zeile_source).Copy Destination:=BlattZiel.Cells( _
erste_freie_Zeile_target), 1)
End With
Gruß
Daniel
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 12:10:00
Frank_S
Hallo Torsten,
genau kopiert habe ich, nur zur Sicherheit die Zeilenumbrüche entfernt, bzw. neu erstellt. Es bleibt ROT und erwartet entweder weitere benannte Parameter oder es ist ein Syntaxfehler.
Es scheint also wirklich nicht zu funktionieren, wie ich es gerne hätte. Muss ich es wohl lassen und mir was komplett neues einfallen lassen.
Frank
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 12:14:49
Frank_S
Alles probiert,
exakte Kopie hier vom Forum (nur falsche Variablennamen verbessert) und auch Unterstriche/Zeilenumbrüche entfernt, weil die manchmal bei copy&paste Fehler erzeugen. Es hilft alles nichts, Code bleibt rot und zeigt Fehler an. Je nach Versuch, entweder Syntax oder fehlender benannter Parameter.
Gruß, Frank
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 12:39:37
Daniel
Wenn du wirklich alles so eingefügt hast, wie in meinem letzten Eintrag, liegt es nicht an der Zeile. Bei Selbsteinschätzung VBA gut wundere ich mich über diese grundsätzlichen Probleme (deine Anweisungen vom Originalcode hatten wirklich grundsätzliche Fehler bei den Zellbezügen). Wenn du die Mappe nicht hochladen willst, werden wir wohl keine Lösung finden.
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 12:50:15
Torsten
Hallo Frank,
teste nochmal meinen Code von 11:20.
Der hat bei mir in einem Test fehlerfrei funktioniert
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 14:09:09
Daniel
Fehler gefunden, da haben wir den Wald vor lauter Bäumen nicht gesehen... Eine Klammer zu viel:
With BlattQuelle
.Range("A3:BG" & letzte_Zeile_source).Copy Destination:=BlattZiel.Cells( _
erste_freie_Zeile_target, 1)
End With

Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 15:20:22
Frank_S
Na aber Hallo,
vielen, vielen Dank. Jetzt funktioniert es. Musste zwar eine Variable vom Namen her anpassen, aber danach lief es.
Kann mich nur noch einmal gaaaaaanz herzlich bedanken.
Anbei hier noch einmal der funktionierende Code, inkl. Function:
Viele Grüße, Frank S.
Sub Export()
Dim erste_freie_Zeile_source As Integer
Dim erste_freie_Zeile_target As Integer
Dim letzte_Zeile_source As Integer
Dim BlattZiel As Worksheet
Dim BlattQuelle As Worksheet
If IsWorkbookOpen("Protokolle.xlsx") Then
'MsgBox "OFFEN"
Else
'MsgBox "Nicht offen"
Workbooks.Open ThisWorkbook.Path & "\Protokolle\Protokolle.xlsx"
End If
Set BlattQuelle = ThisWorkbook.Worksheets("tabAuswertung")
Set BlattZiel = Workbooks("Protokolle.xlsx").Worksheets("tabAuswertung")
erste_freie_Zeile_target = BlattZiel.Cells(Rows.Count, 2).End(xlUp).Row + 1
erste_freie_Zeile_source = BlattQuelle.Cells(Rows.Count, 2).End(xlUp).Row
With BlattQuelle
.Range("A3:BG" & erste_freie_Zeile_source).Copy Destination:=BlattZiel.Cells( _
erste_freie_Zeile_target, 1)
End With
Workbooks("Protokolle.xlsx").Save
Workbooks("Protokolle.xlsx").Close True
ThisWorkbook.Save
End Sub

Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function

Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 11:20:03
Torsten
Dann versuchs mal so:

Dim letzte_Zeile_source as Integer
With BlattQuelle
letzte_Zeile_source = .Cells(Rows.Count, 2).End(xlUp).Row
.Range("A3:" & "BG" & letzte_Zeile_source).Copy BlattZiel.Cells(erste_freie_Zeile_target),  _
1)
End With

AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 13:33:54
Frank_S
Sorry, das gleiche. Direkt beim Einfügen spring der Code auf ROT. Markiert ist die komplette Zeile nach "(xlUp).Row" ist rot. Davor und danach stimmt es anscheinend. Wie oder wo könnte ich die Mappe hochladen?
Anzeige
AW: VBA Copy & Paste Mappenübergreifend
03.04.2019 13:37:14
Frank_S
Habe versucht, die Mappe hochzuladen. Das wird nichts, da Mappe ca 700kB groß, aber hier nur 300kB erlaubt sind.
Hier bin ich
03.04.2019 16:39:28
Hilde
Für Hilde wäre ich sehr dankebar.
AW: Hier bin ich
03.04.2019 16:42:31
Daniel
Danke, musste herzhaft lachen!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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