Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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
Inhaltsverzeichnis

Sub per VBA löschen

Sub per VBA löschen
Michael
Hi Excel-Profis,
ich hab ein riesen Problem und auch bei der Suche in div. Foren nicht fündig geworden.
Ich möchte per Makro in Excel-Dateien ein Makro "

Sub Auto_Close" löschen
. Dieses

Sub kann in jeder Datei in unterschiedlichen Modulen enthalten sein. In jedem Modul können auch  _
weitere Subs sein, die aber erhalten sein sollen. Ich habs schon geschafft, ein Modul zu löschen,aber eben nicht nur ein sub.
Ich wollte das Makro (kein Addin) so gestalten, dass es mittels for-next alle Module durchsucht  _
und in jedem Modul nach den Zeichen "

Sub Auto_Close()" sucht, die Zeilen bis zum nächsten "End Sub
" zählt und diese Anzahl Zeilen löscht.
Wer kann mir helfen und hat die geniale Idee?
Danke
Michael

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sub per VBA löschen
10.03.2011 15:42:11
Hajo_ZI
Hallo Michael,
daszu mußt Du der Zugriff auf das VBA Projekt erlaubt werden. Falls Dir nicht bekannt ist wo Du das einstellst, lasse die Finger davon.

AW: Sub per VBA löschen
10.03.2011 16:17:28
Michael
Danke Hajo,
für die "aufschlussreiche" Info, die mir leider nicht wirklich weiterhilft.
Ich würd mich wirklich freun, wenn ich mit der Antwort weiterkäme.
Danke
AW: Sub per VBA löschen
10.03.2011 19:11:35
Reinhard
Hallo Michael,

Option Explicit
Sub test()
Call DeleteProcedures(Workbooks("Mappe5"), "Auto_Close")
End Sub
Sub DeleteProcedures(ByRef wkb As Workbook, ByVal Proz As String)
Dim VBCodeMod As CodeModule, lngStartLine As Long, CMdl As Object
Dim Zeile As Long, Spalte As Integer, Laenge As Long, Prozedur As String
'On Error Resume Next
For Each CMdl In wkb.VBProject.VBComponents
Set VBCodeMod = wkb.VBProject.VBComponents(CMdl.Name).CodeModule
With VBCodeMod
lngStartLine = .CountOfDeclarationLines + 1
Do Until lngStartLine >= .CountOfLines
Prozedur = .ProcOfLine(lngStartLine, vbext_pk_Proc)
If Prozedur = Proz Then
Laenge = .ProcCountLines(.ProcOfLine(lngStartLine, vbext_pk_Proc), vbext_pk_Proc)
.DeleteLines lngStartLine, Laenge
End If
lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, vbext_pk_Proc),  _
vbext_pk_Proc)
Loop
End With
Next CMdl
End Sub

Gruß
Reinhard
Anzeige
AW: Sub per VBA löschen
11.03.2011 08:15:41
Michael
Danke Reinhard,
ich hab dein Skript in ein Modul kopiert und den Workbooknamen angepasst.
Leider gabs beim Versuch gleich einen Kompilierungsfehler: Dim VBCodeMod As CodeModule
Danke
Michael
Dim VBCodeMod As Object owT
11.03.2011 08:35:31
Rudi
AW: Sub per VBA löschen
12.03.2011 03:05:04
Reinhard
Hallo Michael,
das von Rudi wird klappen. Ich hab mir den Code frisch aus dem Internet geholt und auch umgestellt, dann getestet. Lief sofort.
Irgendein Verweis *annehm*, Hätte ich in meinem XL2000 so einen gebraucht hätte ich es in den Code geschrieben, weil so Codes sammel ich für mich.
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige