ich habe eine etwas ältere Excel-Applikation geerbt, die von Ihren Abläufen etwas umständlich strukturiert ist. Anstelle die Tabellenblätter mit den Auswertung in eine neue Datei zu schieben und zu speichern, speichert sich die Applikation samt Auswertung unter einem anderen Namen und löscht dann alle nicht benötigten Arbeitsblätter, Formulare und Module.
Ich muß jetzt sämtliche VBA Codes mit einem Passwort vor unbefugtem Zugriff schützen. Hier würde ich in den VBAProject - Projekteigenschaften das Kennwort zum Anzeigen der Projekteigenschaften setzen. Problem: Dann laufen diese Codes zum Löschen nicht mehr:
'alle Formen löschen
Private Sub Alle_Formen_löschen()
Dim vbc As Object
For Each vbc In ActiveWorkbook.VBProject.VBComponents
Select Case LCase(vbc.Name)
Case "userform1", "userform2", "userform3", "userform4", "userform5", "userform6", " _
userform7", "userform8": ActiveWorkbook.VBProject.VBComponents.Remove vbc
End Select
Next
End Sub
__________________________________________________________
Private Sub Alle_Module_löschen()
Dim vbc As Object
Dim strFile As String
' bei Fehler zum Errorhandler
On Error GoTo Errorhandler
' Mit dem VBA Objekten in der aktiven Datei.
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
' Wenn Type = 1 dann ist es ein Standardmodul, dies wird komplett gelöscht!
Case 1
.VBComponents.Remove .VBComponents(vbc.Name)
' Wenn Type = 2 dann ist es ein Klassennmodul, dies wird komplett gelöscht!
Case 2
.VBComponents.Remove .VBComponents(vbc.Name)
' Wenn Type = 3 dann ist es ein Userform, dies wird komplett gelöscht!
Case 3
.VBComponents.Remove .VBComponents(vbc.Name)
Case 100
With .VBComponents(vbc.Name).CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next vbc
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 VBAloeschen"
Else
MsgBox "Err.Number = " & Err.Number & ". " & Err.Description, vbCritical
End If
End Sub
Wie kann man das elegant lösen, ohne die halbe Applikation anzupassen?
Eine Passwortabfrage beim User möchte ich gerne vermeiden.
Grüße & Danke
Robert