Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1524to1528
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Bereich in andere Mappe einfügen

VBA-Bereich in andere Mappe einfügen
29.11.2016 14:37:57
Fred Neumann

Guten Tag VBA-Experten,
ich möchte gerne vom aktiven Blatt aus, den Bereich "Z_Monat" in die Arbeitsmappe "Gesamt", Blatt "Liste1" in die nächst freie Zeile kopieren.
Hat jemand dafür einen Beispiel-Code?
mfG
Fred

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Bereich in andere Mappe einfügen
29.11.2016 14:45:56
Michael (migre)
Hallo!
zB
Sub a()
With ActiveSheet
.Range("Z_Monat").Copy
With Workbooks("Gesamt.xlsx").Worksheets("Liste1")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial
End With
End With
End Sub
LG
Michael
AW: VBA-Bereich in andere Mappe einfügen
29.11.2016 15:16:46
Fred Neumann
Hallo Michael,
es kommt "Laufzeitfehler 9"
anscheinend findet er den Zielbereich nicht.
Gelb markiert: "With Workbooks("Gesamt.xlsx").Worksheets("Liste1")"
Datei befindet sich im gleichen Ordner, Tabelleblatt besteht ebenfalls. Muß da irgendwo noch der "Zielpfad" eingegeben werden?
mfG
Fred
AW: VBA-Bereich in andere Mappe einfügen
29.11.2016 16:02:22
Michael (migre)
Hallo!
Datei befindet sich im gleichen Ordner, Tabelleblatt besteht ebenfalls. Muß da irgendwo noch der "Zielpfad" eingegeben werden?
Du hast auch nicht verraten, dass die Datei noch nicht geöffnet ist. Wenn Du die Datei erst öffnen willst, so wie unten. Dann musst Du Dir aber überlegen, ob die Ziel-Datei nach dem Vorgang auch wieder geschlossen werden soll, oder geöffnet bleiben. Wenn sie geöffnet bleiben soll, ist aber die Frage, ob der Code ggf. mehrfach ausgeführt werden soll, d.h. es muss zu Beginn geprüft werden ob die Datei schon offen ist oder diese öffnen.
Also dann zB (rudimentär) so, ist mit Kommentaren:
Sub BenanntenBereichInZielDateiKopieren()
'----- Anpassen -----
Const ZIEL_PFAD As String = "C:\DeinPfad\" 'Verzeichnis der Ziel-Datei
Const ZIEL_MAPPE As String = "Gesamt.xlsx" 'Name der Ziel-Datei
Const ZIEL_BLATT As String = "Liste1" 'Name des Ziel-Tabellenblattes
Const QUELL_BEREICH_NAME As String = "Z_Monat"
'----- ENDE -----
Dim WbQ As Workbook, WsQ As Worksheet, WbZ As Workbook, WsZ As Worksheet
Dim Bereich As Range, Opened As Boolean
Application.ScreenUpdating = False
Set WbQ = ThisWorkbook 'Quell-Mappe = DIESE Mappe (mit Makro(s))
With WbQ
'Aktuelle Auswahl auf dem Blatt wird kopiert...
Set Bereich = .ActiveSheet.Range(QUELL_BEREICH_NAME)
End With
Bereich.Copy 'Kopiert den Bereich wie o.a.
'Ziel-Mappe öffnen, wenn noch nicht offen
If MappeOffen(ZIEL_MAPPE) = False Then
Set WbZ = Workbooks.Open(ZIEL_PFAD & ZIEL_MAPPE)
Opened = True 'Vermerken, dass Ziel-Mappe durch Makro geöffnet wurde
Else: Set WbZ = Workbooks(ZIEL_MAPPE)
End If
'Prüfen ob Ziel-Blatt vorhanden ist; wenn nicht wird Vorgang abgebrochen
'(mit Warnmeldung) und die Ziel-Mappe geschlossen, WENN diese erst durch
'dieses Makro geöffnet wurde
If Not BlattVorhanden(ZIEL_BLATT, WbZ) Then
MsgBox "Ziel-Blatt """ & ZIEL_BLATT & """ in Mappe """ & ZIEL_MAPPE & _
""" nicht vorhanden. Vorgang wird abgebrochen", vbCritical, "Fehler!"
If Opened Then WbZ.Close False
Exit Sub
End If
'Kopierte Daten im Ziel-Blatt einfügen...
With WbZ
Set WsZ = .Worksheets(ZIEL_BLATT)
With WsZ
'...ab der nächsten freien Zelle in Spalte A
'Eingefügt werden nur Werte und Zahlenformate, keine anderen
'Formatierungen etc.
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
xlPasteValuesAndNumberFormats
End With
'Wenn Ziel-Mappe erst durch dieses Makro geöffnet wurde, wird diese
'wieder geschlossen, Änderungen gespeichert, ansonsten bleibt sie geöffnet
If Opened Then .Close True
End With
WbQ.Activate 'Quell-Mappe aktivieren
Application.CutCopyMode = False
End Sub
Function MappeOffen(ZielMappe As String) As Boolean
'Prüft ob eine Mappe mit dem übergebenen Namen bereits offen ist
Dim Wb As Workbook
MappeOffen = False
For Each Wb In Application.Workbooks
If Wb.Name = ZielMappe Then MappeOffen = True
Next Wb
End Function
Function BlattVorhanden(ZielBlatt As String, _
ZielMappe As Workbook) As Boolean
'Prüft ob ein Blatt mit dem übergebenen Namen in der über-
'gebenen Mappe vorhanden ist
Dim Ws As Worksheet
BlattVorhanden = False
For Each Ws In ZielMappe.Worksheets
If Ws.Name = ZielBlatt Then BlattVorhanden = True
Next Ws
End Function
LG
Michael
Anzeige
Super Michael !
29.11.2016 16:26:10
Fred Neumann
Hallo Michael,
dein Code ist echt umfangreich,- hätte nicht gedacht, dass "so ein langes Script" notwendig sei.
Die Zeilen sind hervorragend kommentiert und genau das richtige für einen VBA-Anfänger!
Danke für die Lösung und den mächtigen Aufwand!
mfG
Fred
Kein Aufwand ;-), gerne... lg und owT
29.11.2016 16:52:43
Michael (migre)

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige