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

beim start code Löschen

beim start code Löschen
13.11.2006 06:48:36
roland_k
hoi guten morgen
ich habe folgendes problem :-(
ich speichere automatisch per code eine mappe als "code_löschen_test.xls" ab
folgenden code habe ich im open_ereigniss:

Private Sub Workbook_Open()
If ThisWorkbook.Name <> "code.xls" Then
MsgBox "die mappe heisst nicht code_löschen_test.xls, VBA code wird gelöscht"
Modul1.DeleteCode
End If
End Sub

in Modul1 steht:
Sub DeleteCode()
Dim wks As Worksheet
Dim mdl As Object
With ActiveWorkbook.VBProject
For Each wks In Worksheets
With .VBComponents(wks.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Next wks
With .VBComponents("Modul2").CodeModule
.DeleteLines 1, .CountOfLines
End With
End With
MsgBox "Alles klar!"
End Sub
nun wird aller code in den tabellen gelöscht,
sowie der code in modul2
aber der code in der arbeitsmappe

Private Sub Workbook_Open()wird nicht gelöscht
wie kann ich das anstellen,
dass sämtlicher code in der mappe "code_löschen_test.xls" nach dem ersten aufruf dieser datei gelöscht wird.
wie kann ich hier auch das modul2 entfernen nachdem der code gelöscht wurde?
oder kann ich z. b. gleich das modul2 entfernen ohne abfrage ob dieses exportiert werden soll.
danke, wenn mir da jemand helfen kann
gruss
roland_k

		

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: beim start code Löschen
13.11.2006 07:41:01
Heiko
Moin Roland,
diesen Code zum löschen nutzen !

Sub VBACodeLeschen()
Dim vbc As Object
' bei Fehler zum Errorhandler
On Error GoTo Errorhandler
With ActiveWorkbook.VBProject
' Ein Schleife die ALLE VBComponents durchläuft, sollen nur bestimmte gelöscht werden
' dann muss dieser Code angepaßt werden.
For Each vbc In .VBComponents
Select Case vbc.Type
' Wenn Type = 1 dann ist es ein Standardmodul, dies wird komplett gelöscht!
' Wenn Type = 2 dann ist es ein Klassennmodul, dies wird komplett gelöscht!
' Wenn Type = 3 dann ist es ein Userform, dies wird komplett gelöscht!
Case 1, 2, 3
.VBComponents.Remove .VBComponents(vbc.Name)
' Wenn Type = 100, also DieseArbeitsmappe oder ein Tabellenblatt, dann darin
' alle Codezeilen löschen. Denn die Datei und die Tabellenblätter sollen ja
' erhalten bleiben, also nur den Code löschen.
Case 100
With .VBComponents(vbc.Name).CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
MsgBox "Unbekannter VBA Type !", vbCritical
End Select
Next vbc
End With
' Wenn alles gelöscht wurde, dann raus hier!
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 VBACodeLeschen"
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
danke ...bin am umsetzen
13.11.2006 12:52:40
roland_k
hi heiko
danke ich bin am arbeiten ....probieren usw....
ich denke mal das funkt
wenn nicht mach ich hier nochmal "offen"
gruss roland

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige