Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sheet kopieren OHNE Objekt-Code

Sheet kopieren OHNE Objekt-Code
Brigitte
Hi zusammen,
ein Sheet von einer Datei in eine andere zu kopieren stellt ja kein Problem dar...
Mein Problem besteht darin, dass ich quasi Sheets zwischen verschiedenen Dateien hin- und herschieben will und beim Kopieren auch der Code aus dem Excel-Objekt ("Tabellex") kopiert wird, der auf Makros verweist, die in der anderen Datei ja nicht zur Verfügung stehen...
Zellen hin- und herkopieren möcht ich eigentlich lieber umgehen...
Weiß jemand, obs da ne Möglichkeit gibt die Code-Übertragung "auszuschalten"?
Danke schonmal,
Brigitte
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 15:51:22
Beverly
Hi Brigitte,
erstelle in der neuen Arbeitsmappe eine neue Tabelle, markiere dann alle Zellen in der Ausgangsmappe und fürge sie im neuen Tabellenblatt ein.


AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 15:54:25
Brigitte
Hi Karin,
netter Versuch, aber genau das will ich ja eben nicht...
Noch jemand nen Vorschlag?
Gruß,
Brigitte
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 16:09:10
Beverly
Hi Brigitte,
natürlich kann man auch den Code per VBA aus dem kopierten Tabellenblatt löschen, aber wenn man es sowieso per VBA lösen muss, kann man auch die wesentlich einfachere - oder von dir als "netter Versuch" bezeichnete - Methode verwenden, denn beim Löschen von Code muss auf jeden Fall der Zugriff aufs VBA-Projekt erlaubt sein.


Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 16:27:26
Brigitte
Hi Karin,
wenn ich es über Zellen kopieren mach muss ich aber noch einiges anpassen: Shapes extra kopieren und einfügen, Zoomfaktor anpassen, Fenster fixieren, Gitternetzlinien ausblenden und weiß Gott, was sich die anderen noch alles einfallen lassen, was dann noch zusätzlich berücksichtigt werden müsste...
Deshalb wäre mir wie gesagt lieber, direkt die Tabelle zu kopieren...
Gruß,
Brigitte
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 16:40:14
robert
Hi,
Tabellenreiter-rechte maustaste-blatt verschieben/kopieren ?
vielleicht so?
gruß
robert
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 16:48:16
Brigitte
Hi Robert,
1. soll genau das automatisch geschehen,
2. wird dann der Code übertragen...
Gruß,
Brigitte
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 17:08:25
JogyB
Hi.
Wieso löschst Du nicht einfach anschließend den Code? Geht ja sowohl per VBA als auch manuell.
Gruß, Jogy
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 17:50:37
Brigitte
Hi Jogy,
manuell geht gar nicht (der Kunde soll nicht im Code rumpfuschen) und meine Frage ist ja eben (bzw. enthält auch die Frage) wie es per VBA funktioniert...
Gruß, Brigitte
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 18:04:55
Beverly
Hi Brigitte,
auf nicht gestellte Fragen kann man schlecht antworten. Meinen Lösungsvorschlag hättest du zumindest mit dem Makrorekorder aufzeichnen können, und bei deiner Einschätzung "VBA gut" musste man wenigstens voraussetzen, dass du dazu in der Lage bist.


Anzeige
im Archiv gibt es einige Beispiele-owT
19.07.2010 18:08:49
robert
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 18:31:36
JogyB
Hi.
Sub copyTab()
ThisWorkbook.Sheets(1).Copy
With ActiveWorkbook
With .VBProject.VBComponents(.Sheets(1).CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
End With
End Sub

Macht das mit der ersten Tabelle der Arbeitsmappe, in der der Code steht. Den Rest bekommst Du mit "VBA gut" sicher selbst hin.
Gruß, Jogy
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 23:05:12
Beverly
Hi Brigitte,
habe dadurch, dass inzwischen so viele andere Beitrage dazugekommen waren, diesen deinen Beitrag erst jetzt registriert, möchte aber der Vollständigkeit halber noch darauf antworten. Stimmt schon, dass man bestimmte Einstellungen nicht so ohne Weiteres mit "rübergenommen" bekommt, sodass man diese extra prüfen und auslesen muss, aber Shapes betrifft das nicht - sie werden bei der Copy-Methode da eingefügt, wo sie auch in der Ausgangstabelle waren.


Anzeige
Klassen- Programmierung ohne Code in Tabelle
19.07.2010 18:55:10
Tino
Hallo,
Du kannst mittels Klassen- Programmierung in der Tabelle ganz auf Code verzichten.
Damit wäre auch das Problem mit Zugriff auf VBA Projekte vom Tisch.
Allerding weiß ich nicht welche Codes Du in der besagten Tabelle benutzen willst.
Solltest Du Interesse habe, kann ich Dir ein kleines Beispiel aufbauen.
Gruß Tino
Anzeige
AW: Klassen- Programmierung ohne Code in Tabelle
19.07.2010 20:35:02
Brigitte
Hi zusammen,
@ Jogy: kannte ich bislang nicht, aber gut zu wissen, dass es sowas wirklich gibt (und vor Allem wie es heißt). Leider klappt das anscheinend nur bei Tabellenblättern ohne Events (im speziellen Fall geht es wohl um Worksheet_Activate), EnableEvents=false nützt anscheinend nix...
@ Tino: unabhängig davon, ob ich es jetzt anders hinkrieg, würd mich deine Lösung interessieren...
Es geht hierbei darum, dass in einer Liste alle möglichen "Funktionen" gesammelt werden, die verschiedene Attribute haben und in einem eigenen Reporting-Tool ausgewertet werden sollen.
In der Liste sind bislang Change, Activate, BeforeDoubleClick und SelectionChange-Events hinterlegt.
Im Reporting-Tool soll davon nix mehr zur Verfügung stehen, da es sich hierbei nur um "schreibende" Methoden handelt und die Liste als Referenz exakt so abgebildet werden soll, wie es zum Reporting-Zeitpunkt im Tool war. Evtl werden wieder wie in der Vorgänger-Version "QuickViews" implementiert (also die Daten nach den entsprechenden Kriterien gefiltert), leider (oder zum Glück) wars damals noch so, dass die Liste ein einfacher Datenbank-Export war (also ohne Makros)...
Hoffe du kannst mit den Infos was anfangen;)
Vielen Dank schonmal,
Brigitte
Anzeige
hier ein Beispiel...
19.07.2010 20:50:08
Tino
Hallo,
habe hier mal was zusammengebaut.
Im Klassenmodul "Klasse1" befinden sich die ganzen Eventmakros die sich auf die Tabelle1 beziehen
und noch zwei Beispiel Controls.
Dieses Klassenmodul wird beim aktivieren bzw. deaktivieren der Arbeitsmappe
entsprechend initialisiert, dieser Code steht in "DieserArbeitsmappe".
https://www.herber.de/bbs/user/70648.xls
Gruß Tino
Anzeige
AW: hier ein Beispiel...
19.07.2010 21:57:44
Brigitte
Hi Tino,
dankeschön. Werd zwar jetzt wieder den einfacheren Weg gehen, aber ich nehm das jetzt doch endlich mal zum Anlass um mich wirklich intensiv mit Klassen zu befassen, bislang konnt ich mich immer noch irgendwie rausreden, aber irgendwann kommt der Tag x...
Gruß,
Brigitte
AW: Klassen- Programmierung ohne Code in Tabelle
20.07.2010 09:22:05
JogyB
Hallo Brigitte,
Worksheet_Activate ist bei meinem Code in der Tat ein kleines Problem, allerdings funktioniert das Löschen trotzdem. Es wird eben nur vorher der Code in Worksheet_Activate ausgeführt.
Das kann natürlich zu Fehlern führen, da Du aber weißt, dass das Blatt kopiert werden soll, kannst Du das auch abfangen, z.B. mit
If Not LCase(ThisWorkbook.Name) Like "*.xls*" Then Exit Sub
in dem Objektmodul.
Andererseits hast Du jetzt ja auch noch andere Tipps bekommen, die funktionieren auch und machen die ganze Löscherei unnötig.
Gruß, Jogy
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 21:04:28
Gerd
Hallo Brigitte,
die von dir genannten Event-Prozeduren haben jeweils ein Pendant im Modul DieseArbeitsmappe
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel  _
As Boolean)
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
Gruß Gerd
Anzeige
AW: Sheet kopieren OHNE Objekt-Code
19.07.2010 21:54:55
Brigitte
Hi Gerd,
vielen Dank! Das ist mir ja jetzt fast etwas peinlich, dass ich das bisher nicht gesehen hab... Kommt davon, wenn man immer nur den einfachsten Weg sucht ;)
Gruß
Brigitte
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sheet kopieren ohne Objekt-Code


Schritt-für-Schritt-Anleitung

Um ein Excel-Sheet zu kopieren, ohne den Objekt-Code zu übertragen, kannst Du den folgenden VBA-Code verwenden:

Sub copyTab()
    ThisWorkbook.Sheets(1).Copy
    With ActiveWorkbook
        With .VBProject.VBComponents(.Sheets(1).CodeName).CodeModule
            .DeleteLines 1, .CountOfLines
        End With
    End With
End Sub

Dieser Code kopiert das erste Sheet der aktuellen Arbeitsmappe und löscht den Code, der mit diesem Sheet verbunden ist. Achte darauf, dass der VBA-Zugriff aktiviert ist, damit der Code funktioniert.


Häufige Fehler und Lösungen

  • Problem: Der Code wird weiterhin übertragen.

    • Lösung: Stelle sicher, dass Du den Code in der richtigen Reihenfolge ausführst. Der Code zum Löschen des Codes sollte nach dem Kopieren des Sheets kommen.
  • Problem: Zugriff auf das VBA-Projekt ist nicht erlaubt.

    • Lösung: Gehe zu den Excel-Optionen, aktiviere die Entwickleroptionen und stelle sicher, dass der Zugriff auf das VBA-Projekt aktiviert ist.

Alternative Methoden

Eine andere Methode zum Excel Sheet duplizieren ist das manuelle Kopieren der Zellen, aber dies ist nicht ideal, wenn Du den Code vermeiden möchtest. Du kannst auch ein neues Sheet erstellen und die Werte dort einfügen:

  1. Erstelle ein neues Sheet in der Zielarbeitsmappe.
  2. Gehe zur Ausgangsarbeitsmappe und markiere alle Zellen.
  3. Füge die Zellen im neuen Sheet ein.

Diese Methode funktioniert, aber sie ist nicht so effizient, wenn Du viele Sheets hast.


Praktische Beispiele

Wenn Du mehrere Sheets ohne Code übertragen möchtest, kannst Du den oben genannten VBA-Code anpassen. Zum Beispiel:

Sub copyMultipleTabs()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        With ActiveWorkbook
            With .VBProject.VBComponents(.Sheets(.Sheets.Count).CodeName).CodeModule
                .DeleteLines 1, .CountOfLines
            End With
        End With
    Next ws
End Sub

Mit diesem Code kannst Du alle Sheets in der aktuellen Arbeitsmappe kopieren und den Code in jedem Sheet löschen.


Tipps für Profis

  • VBA-Programmierung: Nutze die Vorteile des Makrorekorders, um häufige Aufgaben zu automatisieren. Du kannst den aufgezeichneten Code anpassen, um ihn effizienter zu machen.
  • Fehlerbehebung: Wenn Du Fehler erhältst, prüfe den Code auf Syntaxfehler und stelle sicher, dass alle Objekte korrekt referenziert sind.
  • Sicherung: Bevor Du größere Änderungen vornimmst, erstelle immer eine Sicherheitskopie Deiner Arbeitsmappen.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel Sheet ohne Code kopieren?
Du kannst den VBA-Code verwenden, um das Sheet zu kopieren und den Code anschließend zu löschen.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren. Achte jedoch darauf, dass der VBA-Zugriff aktiviert ist.

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