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

Forumthread: Sheet ohne Makro kopieren

Sheet ohne Makro kopieren
02.07.2007 10:06:00
Mario
Hallo, habe folgendes Problem.
Ich möchte ein Tabellenblatt in eine andere geöffnete Datei kopiern mit:
ActiveSheet.Copy After:=Workbooks(BerKop).Sheets(1)
Dabei soll das Makro, welches sich im Tabellenblatt befindet nicht mitkopiert werden.
Wie müsste dann die Zeile lauten?
Freue mich über jede Hilfe.
Grüße
Mario

Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:12:00
Hajo_Zi
Hallo Mario,
lösche hinterher das Makro. Bei Gut düfte das kein Problem sein, ansonsten gibt es ja noch die Suchfunktion des Forums.

AW: Sheet ohne Makro kopieren
02.07.2007 10:18:00
Mario
Hallo Hajo,
in dem Makro wird über

Private Sub Worksheet_Activate()
Call Auswertung
End Sub


eine Makro aufgerufen, was natürich nicht vorhanden ist.
Daher bekomme ich dann immer wieder eine Fehlermeldung.
Sonst hätte ich anschließend mit folgendem Makro versucht
dieses kleine Makro zu löschen:
Dim WB As Workbook
Set WB = ActiveWorkbook
With WB.VBProject.VBComponents("Auswertung").CodeModule
.DeleteLines 1, .CountOfLines
End With
Bis dahin komme ich aber erst gar nicht.
Grüße
Mario

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:20:00
Matthias
Hallo Mario,
und wenn du nur die Zellen in ein neu erstelltes Blatt kopierst?

Sub kopieren()
Dim sh As Worksheet
With Workbooks(BerKop)
Set sh = .Sheets.Add(After:=.Sheets(1))
End With
ActiveSheet.Cells.Copy
sh.Cells.PasteSpecial xlPasteAll
Application.CutCopyMode = False


Gruß Matthias

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:23:00
Mario
Hallo Matthias,
danke für den Hinweis, die Idee ist nicht schlecht.
Habe ich gleich mal probiert, allerdings werden dann zahlreiche Grafiken nicht mitkopiert.
Grüße
Mario

AW: Sheet ohne Makro kopieren
02.07.2007 10:27:00
Hajo_Zi
Hallo Mario,
was möchtest Du den Löschen, ich dachte den Code unter der Tabelle?
Da hätte ich eigentlich folgenden Ansatz gesehen:
With .VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Den Zugriff auf das VBA Projekt hast Du selbstverständlich schon zugelassen?

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:38:32
Mario
Hallo Hajo,
damit hätte ich es auch versucht, aber sobald das Sheet mit folgender Zeile kopiert wird:
ActiveSheet.Copy After:=Workbooks(BerKop).Sheets(1)
erhalte ich die Meldung
Sub oder Function nicht definiert!
Grund: In dem frisch kopierten Tabellenblatt befindet sich ein kleines Makro:

Private Sub Worksheet_Activate()
Call Auswertung
End Sub


welches über Call versucht ein Makro aufzurufen, was natürlich nicht mitkopiert wurde.
(Das ist soweit auch OK, weil auch dieses Makro aus einem Modul nicht kopiert werden sollte)
Das kleine Makro soll in der Originaldatei im Sheet natürlich erhalten bleiben und nur in der Kopie herausfliegen.
Viele Grüße
Mario

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:42:00
Matthias
Hallo Mario,
schalte mal den Befehl
Application.EnableEvents = False
an den Beginn des Kopiermakos, danach wieder auf True setzen.
So wird das Activate-Ereignis nicht ausgelöst.
Gruß Matthias

AW: Sheet ohne Makro kopieren
02.07.2007 11:04:00
Mario
Hallo Matthias,
perfekt, jetzt bin ich einen Schritt weiter.
Die Fehlermeldung schaltet das Activate-Ereignis quasi aus.
Jetzt habe ich nur noch das Problem den Code aus dem Tabellenblatt zu löschen
Danke schon mal
Viele Grüße
Mario

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 11:20:50
Matthias
Hallo Mario,
so:

Dim WB As Workbook
Set WB = ActiveWorkbook
With WB.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With


Gruß Matthias

AW: Sheet ohne Makro kopieren
02.07.2007 11:29:13
Mario
Hallo Matthias,
vielen Dank, es funktioniert.
Grüße - Mario

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:44:00
Hajo_Zi
Hallo Marioo,
entscheide Dich doch was Du möchte. Benutze einen Beitrag zu einem Problem. Zu einem neuen Problem fange einen neuen Beitrag an. Diesen Beitrag hast Du eröffnet zum löschen von Code. Jetzt geht es mit einmal um das kopieren von Tabellen. Falls das erste Thema wieder aktuell ist, werde ich auch wieder Antworten.
Gruß Hajo

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 10:46:00
Matthias
Hallo Hajo,
Es geht doch ums Kopieren eines Blattes ohne Code (siehe Thread-Titel), das hängt doch zusammen.
Gruß Matthias

AW: Sheet ohne Makro kopieren
02.07.2007 10:51:00
Hajo_Zi
Hallo Matthias,
im ersten Beitrag Stand
"Dabei soll das Makro, welches sich im Tabellenblatt befindet nicht mitkopiert werden.
Wie müsste dann die Zeile lauten?"
Das habe ich so interpretiert das kopieren ist eledigt, das hätte ich auch nicht als Problem angesehen, da kann man ja den Makrorecorder benutzen. Offen ist noch das löschen des Codes.
Gruß Hajo

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 11:08:27
Mario
Hallo Hajo,
habe es vielleicht nicht an jeder Stelle eindeutig ausgedrückt. Sorry.
Mit folgendem Makro erhalte ich nun die Meldung
'Laufzeitfehler 438 Objekt untersützt diese Eigenschaft oder Methode nicht.
Dim WB As Workbook
Set WB = ActiveWorkbook
With WB.VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Könntest Du mir dazu einen Tipp geben?
Vielen Dank schon mal an Dich für Deine Mühe.
Grüße
Mario

Anzeige
AW: Sheet ohne Makro kopieren
02.07.2007 11:23:47
Hajo_Zi
Halo Marion,
die Frage hatte ich schon gestellt. Den Zugrifff auf das VBA Projekt hast Du zugelassen? Unter Makro, Sicherheit
Gruß Hajo

AW: .VBProject. fehlte - o.T.
02.07.2007 11:25:00
Matthias
-

AW: .VBProject. fehlte - o.T.
02.07.2007 11:37:00
Hajo_Zi
Hallo,
ja ich hatte nur einTeil des Codes Copiert. Hier kmplett.

Sub Code_Loeschen()
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul1")
.VBComponents.Remove .VBComponents("Modul2")
.VBComponents.Remove .VBComponents("Modul3")
'       löschen von z.B. Workbook_open:
With .VBComponents("DieseArbeitsmappe").CodeModule
.DeleteLines 1, .CountOfLines
End With
'       löschen von z.B. Worksheet_Activate:
With .VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
End With
End Sub


Gruß Hajo

Anzeige
AW: .VBProject. fehlte
02.07.2007 11:41:00
Matthias
Hallo Hajo,
ich meinte ja, der Teil fehlte bei Marios Lösungsansatz.
Gruß Matthias

AW: Sheet ohne Makro kopieren
02.07.2007 11:30:53
Mario
Hallo Hajoo,
ja, der Zugriff ist zugelassen.
Viele Grüße
Mario
;
Anzeige
Anzeige

Infobox / Tutorial

Sheet ohne Makro kopieren


Schritt-für-Schritt-Anleitung

Um ein Excel-Tabellenblatt ohne die dazugehörigen Makros zu kopieren, kannst du folgende Schritte ausführen:

  1. Zugriff auf das VBA-Projekt zulassen: Stelle sicher, dass du den Zugriff auf das VBA-Projekt in den Makro-Sicherheitseinstellungen aktiviert hast.

  2. Den Befehl zum Kopieren des Blattes anpassen: Du kannst den Befehl ActiveSheet.Copy verwenden, aber du musst das Activate-Ereignis deaktivieren. Füge dazu den folgenden Code in dein Makro ein:

    Application.EnableEvents = False
    ActiveSheet.Copy After:=Workbooks(BerKop).Sheets(1)
    Application.EnableEvents = True
  3. Mikro entfernen: Um das Makro aus dem kopierten Tabellenblatt zu löschen, verwende den folgenden Code:

    Dim WB As Workbook
    Set WB = ActiveWorkbook
    With WB.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
       .DeleteLines 1, .CountOfLines
    End With
  4. Fehlermeldungen beachten: Achte darauf, dass du keine Fehlermeldungen erhältst, wenn du das Makro ausführst. Wenn du eine Fehlermeldung bekommst, überprüfe die Sicherheitseinstellungen und den Code.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Sub oder Function nicht definiert": Diese Meldung tritt auf, wenn im kopierten Blatt ein Aufruf zu einem nicht vorhandenen Makro besteht. Um dies zu umgehen, stelle sicher, dass das EnableEvents korrekt gesetzt ist.

  • Laufzeitfehler 438: Dies kann auftreten, wenn du versuchst, auf eine Eigenschaft oder Methode zuzugreifen, die für das Objekt nicht unterstützt wird. Überprüfe, ob du den richtigen Zugriff auf das VBA-Projekt hast.


Alternative Methoden

Eine alternative Methode, um ein Blatt ohne Makros zu kopieren, ist die Verwendung der PasteSpecial-Funktion:

Sub kopieren()
    Dim sh As Worksheet
    With Workbooks(BerKop)
        Set sh = .Sheets.Add(After:=.Sheets(1))
    End With
    ActiveSheet.Cells.Copy
    sh.Cells.PasteSpecial xlPasteAll
    Application.CutCopyMode = False
End Sub

Diese Methode kopiert jedoch keine Grafiken. Beachte dies, wenn du Grafiken in deinem Originalblatt hast.


Praktische Beispiele

Hier ist ein Beispiel, wie du ein Blatt ohne die zugehörigen Makros in eine andere Arbeitsmappe kopierst:


Sub CopySheetWithoutMacros()
    Dim sourceSheet As Worksheet
    Set sourceSheet = ActiveSheet

    ' Deaktiviere Ereignisse
    Application.Enable

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