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

modul löschen

modul löschen
06.09.2006 18:54:52
Georg
hallo werte mitstreiter!
wie lösche ich per vba modul ein vba modul aus einer arbeitsmappe. wünschenswerterweise soll quasi ein modul 'selbstmord' begehen.
geht das dass sich ein modul selbst löscht?
danke im voraus für die hilfe
grüsse aus wien
georg wurm

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: modul löschen
06.09.2006 19:06:31
Kurt
Hi,
geht, nur wodurch soll der Code ausgelöst werden?
mfg Kurt
AW: modul löschen
06.09.2006 19:15:50
Georg
hi kurt!
im prinzip wird ein autostartmakro durchlaufen, dieses erzeugt eine pivot tabelle und wenn das erstellen fertig ist, sollen alle module aus der arbeitsmappe gelöscht werden.
also ist der auslöser quasi das ende der berichtserstellung
ich hoffe, die antwort reicht
georg
AW: modul löschen
06.09.2006 19:21:47
Georg
ist noch offen
AW: modul löschen
06.09.2006 19:39:48
Kurt
Hi,
jetzt schreibst du, dass jeglicher Code entfernt werden soll. Da bin ich nicht sicher,
ob das geht, hab auch heute keine Zeit mehr. Lasse die Frage mal offen.
mfg Kurt
Ähhm, noch offen...oT
06.09.2006 19:54:59
Kurt
k
AW: Ähhm, noch offen...oT
06.09.2006 20:02:47
Georg
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("modulname")
End With
und beim end sub wirds dann gelöscht. das funzt sogar mit dem modul, in dem sich der code befindet.
allerdings hab ich jetzt noch im sheet1 den autostart code drin. wie ich den rausbekomm, daran knabber ich noch.
danke vorerst mal kurt
grüsse
georg
Anzeige
AW: Ähhm, noch offen...oT
06.09.2006 21:34:25
K.Rola
Hallo,
ruf diesen Code als letzten auf:
Option Explicit

Sub Overkill()
Dim vbc As Object
Dim wks As Worksheet
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3
.VBComponents.Remove vbc
Case 100
vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
End Select
Next
End With
End Sub

Gruß K.Rola
AW: Ähhm, noch offen...oT
07.09.2006 12:05:37
Georg
whoooaaah!
sehr nett...aller code ist tot!
;)
danke dir vielmals!
AW: Ähhm, noch offen...oT
Orakel
Hallo georg,
alles schön und gut solange die Datei auf Deinem Computer läuft. Nur was hast du dann davon? Was denkst Du passiert, wenn Deine Datei auf einem anderen PC angewandt wird? Ist sichergestellt, dass der User dem Visual Basic-Projekt vertraut?
Grüße
Orakel
Anzeige
AW: Ähhm, noch offen...oT
07.09.2006 12:01:55
Georg
hi
wie meinst du das mit dem vertrauen? wenn der user das makro nicht ausführ, dann bekommt er auch keine auswertung. natürlich wird er vorher drauf eingeschult (hoffentlich)
grüsse
georg
AW: Ähhm, noch offen...oT
Orakel
Hallo,
ich denke, dass, wenn Makros auf Makros zugreifen, zuvor unter "Extras"-"Makro"-"Sicherheit", Register:"Vertrauenswürdige Herausgeber" der Haken unter "Zugriff auf Visual Basic-Projekt vertrauen" gesetzt sein muss. Davon kann man nicht immer ausgehen. Und dann gibts nen Fehler :-(
Grüße
Orakel
AW: Ähhm, noch offen...oT
07.09.2006 14:03:19
Georg
ahaaaaa....
dann sollt ichs möglicherweise zertifizieren.
danke
guter einwand!
grüsse
georg
Anzeige
@ Orakel
07.09.2006 14:04:19
Heiko
Die Fehlermeldung kann man dann so abfangen,

Sub Overkill()
Dim vbc As Object
Dim wks As Worksheet
' bei Fehler zum Errorhandler
On Error GoTo Errorhandler
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3
.VBComponents.Remove vbc
Case 100
vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
End Select
Next
End With
Exit Sub
' Bei Fehlernummer 1004, diese Meldung ausgeben.
Errorhandler:
If Err.Number = 1004 Then
MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung vom Makro Overkill"
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Oder man setzt per Sendkeys den Haken direkt über VBA, in der Recherche sind genügend Beispiele dazu.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: @ Orakel
Orakel
Hallo Heiko, hallo Georg,
ich hoffe Georg erlaubt eine Zwischenfrage.
Mit folgendem Code setze ich den Haken nach der MsgBox "Das löschen..."
SendKeys "%xksv {TAB 2} +~"
Aber ich habe es bis heute noch nicht geschafft, dass nach setzen des Hakens, der Code sofort ausgeführt wird. Auch wenn ich ihn ein zweites Mal hinter "SendKeys..." schreibe.
Hab ich nen Denkfehler?
Grüße
Orakel
AW: @ Orakel
07.09.2006 15:54:59
Heiko
Hallo Orakel (hast du auch nen richtigen Namen ?!),
dann so:

Sub Overkill()
Dim vbc As Object
Dim wks As Worksheet
' bei Fehler zum Errorhandler
On Error GoTo Errorhandler
With Workbooks("Mappe2.xls").VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3
.VBComponents.Remove vbc
Case 100
vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
End Select
Next
End With
Exit Sub
' Bei Fehlernummer 1004, diese Meldung ausgeben.
Errorhandler:
If Err.Number = 1004 Then
' Bei meiner EXCEL Version WinXP und EXCEL 2002 läuft das dann so durch.
SendKeys "%xks%v%z{TAB}~", True
Resume
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: @ Orakel
07.09.2006 17:11:05
Georg
hallo heiko hallo orakel!
prinzipiell ist der code super, nur die sache mit den sendkeys halte ich für einen xtrem grausigen hack, weil der sprach und versionsabhängig ist. ich hab jetzt 2 möglichkeiten
1.) projekt zertifizieren (keine ahnung, wie das geht)
2.) gleich am anfang checken, ob das häkchen gesetzt ist und wenn nicht meldung/instruktion und stop. der punkt gefällt mir nicht, weil ja der user dann jedem makro codemanipulation erlauben würde...
tips zum zertifizieren wären also seeeehr willkommen.
ein grosses danke für die mitarbeit bis jetzt auf jeden fall
grüsse
georg
Anzeige
AW: @ Orakel
07.09.2006 17:58:30
Ulf
Hi,
gib mal in der Excelhilfe Zertifikat als Suchbegriff ein.
mfg Ulf
AW: @ Orakel
07.09.2006 19:16:51
Georg
guter tipp...danke
grüsse
georg
AW: @ Orakel
Orakel
Hallo Georg,
um noch mal auf den Vorschlag von Heiko und Deine Bedenken zurückzukommen. Du kannst doch einfach eine Abfrage vor aktivierung des Codes an den Anwender stellen, die er mit ja oder nein beantworten kann.
Teste mal:
Sub janein() 'Im Original: Private Sub Workbook_Open() verwenden
If MsgBox("Liebe Anwenderin, lieber Anwender," & vbCr & _
       "für die Arbeit mit dieser Datei ist es erforderlich, " & vbCr & _
       "den Zugriff auf Visual Basic-Projekte zu vertrauen." & vbCr & _
       "Diese Einstellung wird beim Start dieser Datei vorgenommen " & vbCr & _
       "Wenn Sie nicht einverstanden sind, klicken Sie bitte auf NEIN", _
       vbYesNo, " Vor Nutzung der Datei bitte aufmerksam lesen !") = vbNo Then
    Application.DisplayAlerts = False
    ActiveWorkbook.Close savechanges:=False 'schließt die Datei ohne Speichern
    Application.DisplayAlerts = True
Else
    Call Overkill 'ruft Makro Overkill auf
End If
End Sub
Viel Erfolg
Orakel
Anzeige
AW: ich nochmal
Orakel
Hallo,
habe noch ein wenig experimentieren müssen, weil Fehler 400 beim 2. Aufruf der Datei auftauchte, wenn der Haken schon gesetzt war. Ich glaube jetzt funzt es. Datei auf "Datei1.xls" umbenennen oder im Code anpassen.
https://www.herber.de/bbs/user/36496.xls
Mondfinsternisbewunderer
Hans
AW: Danke m.T.
Orakel
Hallo Heiko,
funzt tatsächlich auch mit Deiner Key-Anweisung. Wenn ich alles richtig verstanden habe, dann fehlte mir bisher einfach das "Resume" um an der Stelle des Fehlers den Code nach "Setzen des Hakens" fortzusetzen.
Grüße
Hans
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige