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

Bereiche kopieren - benannte Bereiche kopieren

Forumthread: Bereiche kopieren - benannte Bereiche kopieren

Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 09:40:46
Peter
Guten Tag
Mit der ersten Codezeile kopiere ich einen Range von einer Datei in die andere.
Nun möchte ich einen benannten Bereich ebenso kopieren. Wie muss ich die zweite Codezeile anpassen, dass das funktioniert? Nach meinem Verständnis müsste das ja auch funktionieren, selbst wenn der Bereich "nana" in der Quell- und Zieldatei nicht im gleichen Sheet sind, solange der Range genau gleich gross ist.
Danke für eine Antwort.
Gruss, Peter
wbQuelle.Worksheets("Deckblatt").Range("A1:f20").Copy wbZiel.Worksheets("Deckblatt").Range("A1:f20")
wbQuelle.Range("nana").Copy wbZiel.Range("nana")
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 10:32:00
Erich
Hallo Peter,
workbook hat keine Range-Eigenschaft, deshalb kommt da Fehler 438.
Probier mal

wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 10:38:25
Luschi
Hallo Peter,
falls die beiden mit 'nana' benamten Bereiche nicht gleich groß sind, dann funktioniert das so:
wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange.Resize(1, 1)
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 11:53:00
Erich
Hi Peter und Luschi,
dann gehts auch schon so:
wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange(1)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 12:44:00
Luschi
Hallo Erich,
danke für diesen Hinweis, man muß immer wieder über die Möglichkeiten von Excel-Vba staunen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 14:37:47
Peter
Hallo Erich und Luschi
Vielen Dank euch beiden!!
Es funktioniert.
Gruss, Peter
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 18:10:00
Peter
Hallo
Ich hatte Probleme, wenn der benannte Bereich "nana" eine verbundene Zelle ist. Gibt es eine Möglichkeit, dass Excel auch einen solchen Range kopieren kann?
Gruss, Peter
wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange(1)
Anzeige
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 20:48:00
Erich
Hi Peter,
klappt das nicht so?
wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange
Sind verb. Zellen in der Quelle, im Ziel oder in beiden?
Lässt sich der Bereich überhaupt per Hand in den Zielbereich kopieren?
(Ich probier das jetzt nicht aus - mag diese verbundenen Zellen eh nicht ;-))
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Wie verletzt muss eine Zelle sein, dass man sie verbínden muss?
Anzeige
AW: Bereiche kopieren - benannte Bereiche kopieren
04.12.2008 21:14:10
Peter
Hallo Erich
Nein, leider habe ich es so nicht geschafft.
Händisch lässt sich das kopieren.
Die "P.S." hat literarische Züge! Ich mag verbundene Zellen auch nicht - manchmal sind sie unumgänglich, so z.B. wenn man mit Excel Textdokumente (mit Blocksatz) erstellt, jedoch ab und zu mal zwei-spaltig arbeiten muss. Dafür wäre ja Word bestimmt, doch wenn nebst Text viel Zahlen im Spiel sind, ist halt Excel immer noch die bessere Lösung.
Gruss, Peter
Anzeige
AW: Beispielmappe?
04.12.2008 21:28:54
Erich
Hi Peter,
kannst du eine Beispielmappe (zwei Blätter, zwei benannte Bereiche, Testmakro) hochladen?
(Das würde auch gleich die Frage beantworten: Sind verb. Zellen in der Quelle, im Ziel oder in beiden?)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Beispielmappe?
04.12.2008 21:54:34
Peter
Hallo Erich
Es ist nicht ganz einfach, aus dieser relativ grossen Datei eine Beispielsmappe zu generieren.
Nachstehend habe ich den Code kopiert. Die Quell- und die Zieldatei sind von der Formatierung her identisch. "EBreite10" ist sowohl in der Quelldatei als auch in der Zieldatei A21:E21 in der Tabelle "Bericht1" (mit A21:E21 konnte ich kopieren; vielleicht ist ja das Problem, dass die Rangeabfrage der verbundenen Zellen nur "A21" ergibt)
Clever wäre, wenn ich wirklich den Range "EBreite10" in die Ziel-Arbeitsmappe hineinkopieren könnte (trotz verbundenen Zellen), wenn es ja im Originalfile nur um 1 verbundener Zellbereich ginge, liesse sich das ja problemlos händisch machen.
Gruss, Peter

Public Sub KopierenVonDaten()
Dim wbQuelle As Workbook
Dim wbZiel As Workbook
Set wbQuelle = ThisWorkbook
Call TabsEinblenden(wbQuelle)   'Tabellen einblenden
Set wbZiel = FuObFileToRefresh  'Funktionsaufruf (Rückgabewert ist ein Objekt)
Call TabsEinblenden(wbZiel)        ‘Tabellen einblenden
wbQuelle.Worksheets("Deckblatt").Range("A1:f30").Copy wbZiel.Worksheets("Deckblatt").Range("A1: _
f30")
wbQuelle.Worksheets("Bericht1").Range("A21:e21").Copy wbZiel.Worksheets("Bericht1").Range("A21: _
E21")
wbQuelle.Names("eUe").RefersToRange.Copy wbZiel.Names("eUe").RefersToRange ‚ist nur eine Zelle
wbQuelle.Names("oUe").RefersToRange.Copy wbZiel.Names("oUe").RefersToRange
'wbQuelle.Names("EBreite10").RefersToRange.Copy wbZiel.Names("EBreite10").RefersToRange  ' _
entspricht („A21:E21“)
Set wbZiel = Nothing
Set wbQuelle = Nothing
End Sub


Anzeige
AW: Beispielmappe?
04.12.2008 22:09:00
Erich
Hi Peter,
da könnte ich mir vorstellen, dass sich etwas mit MergeCells und MergeArea machen ließe.
Könntest du dir die Mühe machen, eine neue Beispielmappe zu bauen (nicht "aus dieser relativ grossen Datei")?
Daran könnte man sehen, welche Bereiche mit "eUe" usw. benamst sind,
sehen, wo der beisherige Code klemmt, testen, ... (aber nicht mehr heute...)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Beispielmappe?
04.12.2008 22:44:51
Peter
Hallo Erich
Ich werde etwas bauen und wohl in einen neuen Beitrag packen.
Vielen Dank für die Unterstützung.
Gruss, Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Bereiche kopieren: Benannte Bereiche in Excel VBA


Schritt-für-Schritt-Anleitung

Um benannte Bereiche in Excel VBA zu kopieren, kannst du folgende Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklicke auf dein Projekt und wähle „Einfügen“ > „Modul“.

  3. Nutze den folgenden Code:

    Public Sub KopierenVonDaten()
        Dim wbQuelle As Workbook
        Dim wbZiel As Workbook
        Set wbQuelle = ThisWorkbook
        Set wbZiel = Workbooks.Open("Pfad\Zur\Zieldatei.xlsx") ' Ändere den Pfad entsprechend
    
        ' Kopieren eines benannten Bereichs
        wbQuelle.Names("nana").RefersToRange.Copy wbZiel.Names("nana").RefersToRange
    
        ' Schließe die Zielarbeitsmappe
        wbZiel.Close SaveChanges:=True
    End Sub
  4. Führe das Makro aus, um die Daten zu kopieren. Achte darauf, dass die benannten Bereiche in der Quell- und Zieldatei identisch sind.


Häufige Fehler und Lösungen

  • Fehler 438: „Objekt unterstützt diese Eigenschaft oder Methode nicht“.

    • Lösung: Stelle sicher, dass du die Names-Eigenschaft korrekt verwendest, wie in den Beispielen gezeigt.
  • Unterschiedliche Größen der benannten Bereiche:

    • Lösung: Verwende .Resize() oder .RefersToRange(1) um sicherzustellen, dass der Zielbereich die richtige Größe hat.

Alternative Methoden

Falls du auf Probleme stößt, gibt es auch alternative Methoden um benannte Bereiche zu kopieren:

  1. Direktes Kopieren ohne VBA:

    • Markiere den benannten Bereich in der Quellarbeitsmappe und kopiere ihn manuell in die Zieldatei.
  2. Verwendung von MergeCells:

    • Wenn dein benannter Bereich verbundene Zellen enthält, kannst du die MergeCells-Eigenschaft nutzen, um die Zellen korrekt zu verarbeiten.
    If wbQuelle.Names("nana").RefersToRange.MergeCells Then
        wbQuelle.Names("nana").RefersToRange.MergeArea.Copy wbZiel.Names("nana").RefersToRange
    End If

Praktische Beispiele

Hier ist ein Beispiel für das Kopieren von benannten Bereichen, einschließlich der Handhabung von verbundenen Zellen:

Public Sub KopierenMitVerbundenenZellen()
    Dim wbQuelle As Workbook
    Dim wbZiel As Workbook
    Set wbQuelle = ThisWorkbook
    Set wbZiel = Workbooks.Open("Pfad\Zur\Zieldatei.xlsx")

    ' Überprüfe, ob der benannte Bereich verbunden ist
    If wbQuelle.Names("EBreite10").RefersToRange.MergeCells Then
        wbQuelle.Names("EBreite10").RefersToRange.MergeArea.Copy wbZiel.Names("EBreite10").RefersToRange
    Else
        wbQuelle.Names("EBreite10").RefersToRange.Copy wbZiel.Names("EBreite10").RefersToRange
    End If

    wbZiel.Close SaveChanges:=True
End Sub

Tipps für Profis

  • Verwende ThisWorkbook um sicherzustellen, dass du immer auf die aktuelle Datei zugreifst.
  • Backup der Arbeitsmappen: Erstelle Sicherungskopien, bevor du Daten kopierst, um Datenverlust zu vermeiden.
  • Teste deinen Code: Nutze Debug.Print um die Werte und den Status deiner Variablen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Kann ich mehrere benannte Bereiche gleichzeitig kopieren? Ja, du kannst mehrere Copy-Befehle in einer Schleife verwenden, um alle benötigten Bereiche zu kopieren.

2. Was ist der beste Weg, um mit verbundenen Zellen umzugehen? Überprüfe vor dem Kopieren, ob die Zellen verbunden sind, und nutze die MergeArea-Eigenschaft für das Kopieren.

3. Warum funktioniert das Kopieren nicht, wenn die Bereiche in unterschiedlichen Blättern sind? Stelle sicher, dass du den vollständigen Verweis auf das Arbeitsblatt angibst, wenn du die Bereiche kopierst.

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