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

Forumthread: Tabellenausschnitt per VBA in neue Mappe kopieren

Tabellenausschnitt per VBA in neue Mappe kopieren
Fritz_W
Hallo Forumsbesucher,
wie kann ich per Makro folgendes erreichen:
Ich möchte aus dem aktuell geöffneten Tabellenblatt die Zellbereiche E2:F75 und J2:K75 kopieren und diese Zellbereiche als Kopie in eine neue Mappe (gleicher Zellbereich wie in Ursprungstabelle) einfügen. Das Tabellenblatt soll die gleiche Bezeichnung (Name) erhalten, wie die "Ursprungstabelle". Formeln im kopierten Zellbereich sollten jedoch als Werte in der Zieltabelle erscheinen. Die Formatierungen sollten (wenn möglich) auch in der Zieltabelle denen der Ursprungstabelle entsprechen. Die neue Mappe sollte als Namen den Zelleintrag aus B2 des kopierten Tabellenblatts erhalten und im Ordner der "Quellmappe" gespeichert werden.
Über eure Hilfe bei der Umsetzung meines Vorhabens danke ich im Voraus.
mfg
Fritz
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Tabellenausschnitt per VBA in neue Mappe kopieren
20.05.2010 14:40:31
Oberschlumpf
Hi Fritz
Kopiere diesen Code ins allgemeine Modul und teste:
Sub sbCopyRange()
'es wird eine neue Datei erstellt
Workbooks.Add
'1 in () anpassen, wenn nicht das 1. Tabellenblatt die Quelle ist
With ThisWorkbook.Sheets(1)
'Bereich E2:F75 wird kopiert
.Range("E2:F75").Copy
With Range("E2")
'nur die Werte werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'nur die Formate werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
'Bereich J2:K75 wird kopiert
.Range("J2:K75").Copy
With Range("J2")
'nur die Werte werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'nur die Formate werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
Application.CutCopyMode = False
'Blatt der neuen Tabelle erhält selben Blattnamen aus Quelldatei
ActiveSheet.Name = .Name
'neue Datei wird im selben Verz der Quelldatei mit dem Namen aus B2 aus Quelldatei  _
gespeichert
'existiert die Datei schon, erfolgt eine Fehlermeldung
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & .Range("B2").Value
End With
End Sub

Hilfts?
Ciao
Thorsten
Anzeige
AW: Tabellenausschnitt per VBA in neue Mappe kopieren
20.05.2010 15:09:02
Fritz_W
Hallo Thorsten,
zunächst vielen Dank für Deine Hilfe.
Funktioniert leider nicht. Folgende Fehlermeldung erscheint
Laufzeitfehler'1004':
Auf die Datei konnte nicht zugegriffen werden. Versuchen Sie die folgenden
Lösungsvorschläge:
• Überprüfen Sie, ob der angegebene Ordner vorhanden ist.
• Stellen Sie sicher, dass der Ordner, In dem sich die Datei befindet, nicht
schreibgeschützt ist.
• Vergewissern Sie sich, dass der Dateiname keines der folgenden Zeichen enthält:
? [ 1 : 1 oder "
• Der Dateiname darf nicht länger als 218 Zeichen sein.
Probleme bereitet wohl die Umsetzung dieser Anweisung im Code:
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & .Range("B2").Value
Kannst Du weiterhelfen?
Gruß
Fritz
Anzeige
AW: Tabellenausschnitt per VBA in neue Mappe kopieren
20.05.2010 16:47:35
Oberschlumpf
Hi Fritz
Bei mir funzt der Code einwandfrei.
In Zelle B2 (zukünftiger dateiname) darf kein Zeichen stehen, welches im Dateinamen nicht akzeptiert wird.
Hilft der Hinweis?
Ciao
Thorsten
Fehler gefunden
20.05.2010 17:56:18
Fritz_W
Hallo Thorsten,
Fehler gefunden ... und es war mein eigener...
Ich hatte nicht beachtet, dass ich die "Quelltabelle" im Code anpassen muss, wenn diese nicht die
1. Tabelle ist und dem war so. Nun funktioniert das auch bei mir.
Dennoch noch einen Wunsch, Könnte man im Code noch integrieren, dass in der Zieltabelle die Spalten A bis D sowie G bis I ausgeblendet werden!
Ansonsten nochmals ganz herzlichen Dank
Schöne Grüße
Fritz
Anzeige
@Thorsten
20.05.2010 19:16:31
Fritz_W
Hallo Thorsten,
hat sich erübrigt, ich hab es selbst hinbekommen.
Einen schönen Abend noch
Gruß
Fritz
;

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
Anzeige
Anzeige

Infobox / Tutorial

Tabellenausschnitt mit VBA in neue Mappe kopieren


Schritt-für-Schritt-Anleitung

Um einen Tabellenausschnitt per VBA in eine neue Mappe zu kopieren, gehe wie folgt vor:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub sbCopyRange()
       ' Es wird eine neue Datei erstellt
       Workbooks.Add
       ' 1 in () anpassen, wenn nicht das 1. Tabellenblatt die Quelle ist
       With ThisWorkbook.Sheets(1)
           ' Bereich E2:F75 wird kopiert
           .Range("E2:F75").Copy
           With Range("E2")
               ' Nur die Werte werden in die neue Datei an gleicher Stelle übertragen
               .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
               ' Nur die Formate werden in die neue Datei an gleicher Stelle übertragen
               .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
           End With
           ' Bereich J2:K75 wird kopiert
           .Range("J2:K75").Copy
           With Range("J2")
               ' Nur die Werte werden in die neue Datei an gleicher Stelle übertragen
               .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
               ' Nur die Formate werden in die neue Datei an gleicher Stelle übertragen
               .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
           End With
           Application.CutCopyMode = False
           ' Blatt der neuen Tabelle erhält selben Blattnamen aus Quelldatei
           ActiveSheet.Name = .Name
           ' neue Datei wird im selben Verzeichnis mit dem Namen aus B2 gespeichert
           ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & .Range("B2").Value
       End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, um die Excel-Tabelle in eine neue Mappe zu kopieren.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Wenn du die Fehlermeldung erhältst, dass auf die Datei nicht zugegriffen werden kann, überprüfe Folgendes:

    • Ist der Ordner, in dem die Datei gespeichert werden soll, vorhanden?
    • Ist der Ordner nicht schreibgeschützt?
    • Enthält der Dateiname ungültige Zeichen wie ?, [, :, " oder ist er länger als 218 Zeichen?
  • Falsches Tabellenblatt: Stelle sicher, dass du das richtige Tabellenblatt im Code angibst. Wenn dein Quellblatt nicht das erste ist, passe die ThisWorkbook.Sheets(1) Zeile entsprechend an.


Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du die gewünschten Zellbereiche auch manuell kopieren und in eine neue Arbeitsmappe einfügen.

  1. Markiere die Zellen E2:F75 und J2:K75 in deiner Excel-Tabelle.
  2. Kopiere die Zellen mit STRG + C.
  3. Öffne eine neue Excel-Arbeitsmappe.
  4. Füge die Zellen mit STRG + V ein und wähle „Werte einfügen“ aus dem Kontextmenü, um nur die Werte zu übertragen.

Praktische Beispiele

Angenommen, du hast eine Excel-Tabelle mit Verkaufsdaten, die du in eine neue Mappe kopieren möchtest:

  1. Du möchtest die Bereiche E2:F75 (Verkäufe) und J2:K75 (Gewinne) in eine neue Mappe kopieren.
  2. Verwende den oben angegebenen VBA-Code, um diese Daten automatisiert zu übertragen.

Tipps für Profis

  • Dateinamen dynamisch gestalten: Du kannst den Dateinamen aus einer bestimmten Zelle dynamisch beziehen, um die Dateiverwaltung zu erleichtern.
  • Zusätzliche Formatierungen: Wenn du möchtest, dass bestimmte Spalten in der neuen Mappe ausgeblendet werden, kannst du den VBA-Code erweitern, um dies zu integrieren.

    Beispiel:

    Columns("A:D").EntireColumn.Hidden = True
    Columns("G:I").EntireColumn.Hidden = True

FAQ: Häufige Fragen

1. Wie kann ich das VBA-Makro ausführen? Du kannst das Makro ausführen, indem du im Excel-Fenster ALT + F8 drückst, das Makro auswählst und auf „Ausführen“ klickst.

2. Gibt es eine Möglichkeit, die Formatierungen der Zellen zu ändern? Ja, du kannst den VBA-Code anpassen, um spezifische Formatierungen festzulegen, bevor du die Werte 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