Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Modul oder Sub per Makro entfernen

Forumthread: Modul oder Sub per Makro entfernen

Modul oder Sub per Makro entfernen
31.08.2005 20:49:49
Chris
Hallo Zusammen,
ist es möglich, per VBA ein bestimmtes Sub oder sogar ein Modul aus dem VBA Projekt zu entfernen?
vielen Dank & Gruß
Chris
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Modul oder Sub per Makro entfernen
31.08.2005 22:22:19
Nepumuk
Hallo Chris,
löschen eines ganzen Module ist enifach:
Public Sub prcRemove()
    With Workbooks("Mappe1.xls").VBProject
        .VBComponents.Remove .VBComponents("Modul1")
    End With
End Sub

Ein einzelnes Makro ist schon aufwendiger:
Public Sub prcDelete()
    Dim intIndex As Integer, intLine As Integer
    Dim intStartLine As Integer, intEndLine As Integer
    With Workbooks("Mappe1.xls").VBProject
        For intIndex = 1 To .VBComponents.Count
            With .VBComponents(intIndex).CodeModule
                For intLine = 1 To .CountOfLines
                    If .ProcOfLine(intLine, 0) = "TestMakro" Then
                        If intStartLine = 0 Then
                            intStartLine = intLine
                        Else
                            intEndLine = intLine
                        End If
                    End If
                Next
                If intStartLine <> 0 Then
                    .DeleteLines intStartLine, intEndLine - intStartLine + 1
                    Exit For
                End If
            End With
        Next
    End With
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
Makro dass sich selbst löscht
04.09.2005 14:32:57
Reinhard
Hallo allerseits,
scheinbar löscht der nachfolgende Code nicht sich selbst oder ich habe was gefalscht gemacht.
Welcher Code löscht denn sich selbst so dass nachher die Rechnungsdateien keine makros mehr erhalten.
Danke & Gruß
Reinhard

Option Explicit
Private Sub Workbook_Open()
Dim intIndex As Integer, intLine As Integer, intStartLine As Integer, intEndLine As Integer
If ThisWorkbook.CustomDocumentProperties.Count = 0 Then
ThisWorkbook.CustomDocumentProperties.Add Name:="Nr", LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=0
End If
ThisWorkbook.CustomDocumentProperties("Nr") = ThisWorkbook.CustomDocumentProperties("Nr") + 1
ThisWorkbook.SaveAs Filename:="Rechnung" & ThisWorkbook.CustomDocumentProperties("Nr")
With ThisWorkbook.VBProject
For intIndex = 1 To .VBComponents.Count
With .VBComponents(intIndex).CodeModule
For intLine = 1 To .CountOfLines
If .ProcOfLine(intLine, 0) = "Private Sub Workbook_Open()" Then
If intStartLine = 0 Then
intStartLine = intLine
Else
intEndLine = intLine
End If
End If
Next
If intStartLine <> 0 Then
.DeleteLines intStartLine, intEndLine - intStartLine + 1
Exit For
End If
End With
Next
End With
End Sub

Anzeige
AW: Makro dass sich selbst löscht
04.09.2005 14:41:04
Nepumuk
Hallo Reinhard,
der Prozedurname ist "Workbook_Open"
Mit ProcOfLine fragst keine Zeile ab, sondern den Namen!!!
Gruß
Nepumuk
Excel & VBA – Beispiele
ah, danke dir :-) Gruß o.w.T.
04.09.2005 14:43:01
Reinhard
;
Anzeige
Anzeige

Infobox / Tutorial

Modul oder Sub per Makro entfernen in Excel


Schritt-für-Schritt-Anleitung

Um ein Modul oder Sub per Makro in Excel zu entfernen, kannst Du folgenden VBA-Code verwenden. Diese Anleitung bezieht sich auf Excel 2016 oder höher.

  1. Öffne den Visual Basic for Applications (VBA) Editor, indem Du ALT + F11 drückst.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere und füge den folgenden Code in das Modul ein, um ein bestimmtes Modul zu löschen:
Public Sub prcRemove()
    With Workbooks("Mappe1.xls").VBProject
        .VBComponents.Remove .VBComponents("Modul1")
    End With
End Sub
  1. Um ein bestimmtes Sub zu löschen, verwende diesen Code:
Public Sub prcDelete()
    Dim intIndex As Integer, intLine As Integer
    Dim intStartLine As Integer, intEndLine As Integer

    With Workbooks("Mappe1.xls").VBProject
        For intIndex = 1 To .VBComponents.Count
            With .VBComponents(intIndex).CodeModule
                For intLine = 1 To .CountOfLines
                    If .ProcOfLine(intLine, 0) = "TestMakro" Then
                        If intStartLine = 0 Then
                            intStartLine = intLine
                        Else
                            intEndLine = intLine
                        End If
                    End If
                Next
                If intStartLine <> 0 Then
                    .DeleteLines intStartLine, intEndLine - intStartLine + 1
                    Exit For
                End If
            End With
        Next
    End With
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um das Modul oder Sub zu löschen.

Häufige Fehler und Lösungen

  • Fehler: "Der angegebene Vorgang kann nicht abgeschlossen werden."

    • Lösung: Stelle sicher, dass Du die Datei mit dem VBA-Projekt geöffnet hast und dass die Makros aktiviert sind.
  • Fehler: "Das Modul konnte nicht gefunden werden."

    • Lösung: Überprüfe den Namen des Moduls oder Subs, das Du löschen möchtest. Achte auf die Groß- und Kleinschreibung.

Alternative Methoden

Eine alternative Methode, um ein Modul zu löschen, ist die Verwendung von Excel VBA über das Menü:

  1. Gehe zu "Entwicklertools" > "Visual Basic".
  2. Klicke mit der rechten Maustaste auf das Modul, das Du löschen möchtest.
  3. Wähle "Löschen" aus dem Kontextmenü.

Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen können:

  • Beispiel 1: Löschen eines Moduls namens "Modul1":

    With ThisWorkbook.VBProject
        .VBComponents.Remove .VBComponents("Modul1")
    End With
  • Beispiel 2: Löschen eines Subs namens "TestMakro" aus dem aktuellen Modul:

    ' Code wie oben beschrieben verwenden

Tipps für Profis

  • Verwende die On Error Resume Next-Anweisung, um Fehler während des Löschvorgangs zu ignorieren.
  • Stelle sicher, dass Du ein Backup Deiner Datei machst, bevor Du Module oder Subs löschst.
  • Nutze die Application.DisplayAlerts = False, um Bestätigungsdialoge beim Löschen von Modulen zu unterdrücken.

FAQ: Häufige Fragen

1. Wie kann ich alle VBA-Module auf einmal löschen? Du kannst eine Schleife verwenden, um alle Module zu durchlaufen und sie einzeln zu löschen.

2. Was passiert, wenn ich ein Modul lösche? Alle darin enthaltenen Subs und Funktionen gehen verloren, daher ist es ratsam, vorher ein Backup zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige