Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
508to512
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
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sheet kopieren und in Kopie alle Makros löschen

Sheet kopieren und in Kopie alle Makros löschen
01.11.2004 11:41:43
Jule
hallo alle zusammen,
hab mal wieder eine Frage: Mit nachfolgenden Code (wird über Button in UF ausgeführt) kopiere ich das aktive Tabellenblatt.

Private Sub CommandButton7_Click()
ActiveSheet.Select
ActiveSheet.Copy
End Sub

Das ist nicht schwer. Nur in der Kopie stehen alle Makros der Orginaldatei. Diese Makros müßten alle entweder deaktiviert oder gelöscht sein. Geht das irgendwie?
Danke für eure Hilfe.
Jule

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

Betreff
Datum
Anwender
Anzeige
AW: Sheet kopieren und in Kopie alle Makros löschen
01.11.2004 12:22:57
Rolf
Hallo Jule,
hier ein Beispiel
FG
Rolf

Sub moduleweg()
Dim vb                  'Liste der Projektkomponenten
Dim vbelem              'Elemente d.Liste
Dim ProjName As String  'Projektname
ProjName = "modlösch"   'z.B.
Set vb = Application.VBE.VBProjects(ProjName).VBComponents
For Each vbelem In vb
If Left(vbelem.Name, 5) = "Modul" Then
vb.Remove vbelem
End If
Next
End Sub

AW: Sheet kopieren und in Kopie alle Makros löschen
Jule
Hallo Rolf
bin in bva noch nicht so bewandert. Wie bau ich den Code ein? Du hast den Anfang des Codes schön erklärt. Was ist mit ProjName = "modlösch" 'z.B. und If Left(vbelem.Name, 5) = "Modul" Then
vb.Remove vbelem
gemeint?
Danke für deine Hilfe
Jule
Anzeige
AW: Sheet kopieren und in Kopie alle Makros löschen
01.11.2004 14:07:27
Rolf
Hallo Jule,
ich habe den Code jetzt ein bisschen allgemeiner gefasst,
und den eigentlichen Modullöschbefehl auf Kommentar gesetzt,
damit du erst mal im Direktfenster sehen kannst,
was gelöscht werden würde.
Wenn du dich noch nicht so gut mit VBA auskennst,
solltest du sehr zurückhaltend damit umgehen.
Teste auf jeden Fall erst mal mit einer duplizierten
Datei. Den Code kopierst du in irgend ein Modulblatt.
FG
Rolf

Sub Module_weg()
Dim m As Object
Dim vb As Object
Set vb = ActiveWorkbook.VBProject.VBComponents
For Each m In vb
If m.Type = 1 Then
Debug.Print m.Name
'vb.Remove m
End If
Next
End Sub

Anzeige
Habe noch eine Frage
Jule
Hallo Rolf,
danke für den Code. Jetzt noch eine Frage. Mein Kopier-Code kopiert die Datei. Woher weiß dein Code, aus welcher Datei der Code zu löschen ist? Er soll nur aus der neu erstellten Datei gelöscht werden.
Sorry das ich so blöd frage
Danke für deine Geduld
Jule
AW: Habe noch eine Frage
01.11.2004 17:31:10
Rolf
Hallo Jule,
es werden die Module der
jeweils aktivierten Arbeitsmappe gelöscht.
FG
Rolf
Das klappt nicht!
Jule
Guten Morgen Rolf,
habe das Makro ausprobiert. Entweder ich mache etwas verkehrt oder es funktioniert nicht. Ich kopiere das Tabellenblatt, aber alle Makros sind noch vorhanden. Sie liegen "hinter" der Tabelle.
Weiß nicht weiter.
Gruß Jule
Anzeige
letzter Versuch
02.11.2004 10:17:15
Rolf
Hallo Jule,
ich hatte bisher verstanden,
dass du in Dateien, die du weiter gibst,
die Modulblätter löschen willst.
Das macht die bisher z.V. gestellte Prozedur.
Jetzt verstehe ich dich so,
dass du den Code in den Klassenmodulen
der kopierten Arbeitsblätter weg haben willst.
Die folgende Prozedur löscht, nach Rückfrage,
den Code in den Klassenmodulen der aktiven Arbeitsmappe.
FG
Rolf

Sub code_in_klassenmodulen_löschen()
Dim vb As Object
Dim m As Object
Dim n As Integer, i As Integer
Dim rc As Variant
Set vb = ActiveWorkbook.VBProject.VBComponents
For Each m In vb
If m.Type = 100 Then
n = m.CodeModule.CountOfLines
If n > 0 Then
rc = MsgBox("Soll der Code im Klassenmodul von   " _
& m.Name & "   wirklich gelöscht werden?", 4)
If rc <> 7 Then
For i = n To 1 Step -1
m.CodeModule.DeleteLines i
Next
End If
End If
End If
Next
End Sub

Anzeige
AW: letzter Versuch
Jule
Danke Rolf,
und sorry das ich mich so verkehrt ausgedrückt habe. Werde den Code nachher gleich ausprobieren. Können wir die Rückfrage weglassen?
Danke für deine Geduld mit mir, weiß es zu schätzen. :)
Jule
AW: letzter Versuch
02.11.2004 11:23:57
Rolf
Hallo Jule,
ob's geklappt hat,
möchte ich natürlich schon wissen.
HG
Rolf
Bitte, bitte hilf mir nochmal!!!!
Jule
Hie Rolf,
ansich funktioniert dein Code wirklich prima, wenn ich ihn in der aktuellen Mappe (sprich der, aus der ich kopiere)starte. Leider funktioniert es nicht, das ich wie anfänglich beschrieben kopiere und der Code dann in bzw. mit der Kopie ausgeführt wird.
Könnte man dein Code nicht irgendwie mit dem Kopiercode koppeln, so das wirklich die makros der Kopie gelöscht werden?
Bist ein Schatz, danke für die Hilfe
Jule
Anzeige
AW: Bitte, bitte hilf mir nochmal!!!!
02.11.2004 14:22:25
Rolf
Hallo kleine Nervensäge,
du hast die Lösung ja schon selbst gefunden:
einfach die Lösch- in die Kopierprozedur
integrieren:

Private Sub CommandButton7_Click()
ActiveSheet.Select
ActiveSheet.Copy
Call code_in_klassenmodulen_löschen
End Sub

Herzliche Grüße
Rolf
Dankeschön!!!! :o)
Jule
Dankeschön Rolf,
hast mir wirklich sehr geholfen. Gut das es hier im Forum Profis wie dich gibt, die auch mal ein bissel mehr Geduld mit einem haben. Die Sache mit "call" war mir neu. Wieder was gelernt!
Danke nochmal und noch schönen Nachmittag
Jule
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige