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

Forumthread: Alle Makros durch Makro löschen

Alle Makros durch Makro löschen
08.11.2014 11:35:30
Daniel
Hallo Forum,
ich glaube bei meinem letzten Thread ist etwas schief gegangen also probiere ich es hier noch einmal.
Wir benutzen Dateien die über lange Jahre entwickelt wurden und in denen eine Menge ungenutzter Makros liegen die ich gerne entfernen möchte. (Ich glaube das diese ev. Instabilitäten/Abstürze verursachen)
Nun habe ich ein Makro gefunden das alle Makros in einer Datei löscht (s.u.) aber das wir sehr viele Dateien haben würde ich dieses gerne nutzen um alle Makros von allen Dateien in einem zu wählenden Ordner löscht. Am besten mit einem Auswahlmenue für den Ordner. Diese würde ich in meiner Personal.xlsb unterbringen und bei Bedarf die Dateien in dem entsprechenden Ordner bereinigen.
ich habe jetzt noch etwas code gefunden von dem ich gehofft habe das er das erfüllen kann was ich mir vorstelle. In diesen habe ich den code (kursiv) zum löschen der Makros sowie eine box zum Pfad eingeben eingefügt.
Die erste Fehlermeldung die ich bekomme is die "Methode calculation für das Objekt_Application" ist fehlgeschlagen. wenn ich dieses einfach mal ausschalte mit ' passiert gar nix mehr... Folgerung er hat nen Fehler und führt "fin" aus. Also das abgeschaltet dann kommt typen unverträglich für stCalc = .Calculation.
Zu allem überfluss führt er das zweite sub gar nicht in den Makros auf... keine Ahnung warum...
Hier bin ich leider völlig überfordert.
Ich hoffe Ihr könnt mir hier Helfen!!
Option Explicit
' Suchmuster gegebenenfalls anpassen
Const strEX As String = "*.xls*"
' Module    : Module1
' Procedure : Files_Read
' Author    : Case (Ralf Stolzenburg)
' Date      : 15.10.2012
' Purpose   : Alle Dateien eines Ordners - Optional mit Unterordner...
Sub Files_Read()
Dim stCalc As Integer
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
Dim dirInfo As Object
On Error GoTo Fin
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
stCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Datei im gleichen Ordner wie Auswertungsdateien
' strDir = ThisWorkbook.Path & "\"
' Fester Ordner vorgegeben
 strDir = InputBox("Text ?", "Title") 'Verzeichniss pfad eingabe
strDir = IIf(Right(strDir, 1)  "\", strDir & "\", strDir)
Set objDir = objFSO.getfolder(strDir)
'dirInfo objDir, strEX, True ' Mit Unterordner
dirInfo objDir, strEX, False ' Ohne Unterordner
Fin:
With Application
' Bei Bedarf
'.Goto (ThisWorkbook.Worksheets(1).Range("A1")), True
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
End Sub
' Module    : Module1
' Procedure : dirInfo
' Author    : Case (Ralf Stolzenburg)
' Date      : 15.10.2012
' Purpose   : Rekursive Funktion alle Dateien...
Sub MakroDel(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName Then
If varTMP.Name  ThisWorkbook.Name Then
If Left(varTMP.Name, 1)  "~" Then
' Hier jetzt der Code um mit der Datei etwas zu machen
' z. B. Öffnen, etwas auslesen oder was auch immer...
' Im folgenden werden nur ein paar Informationen
' im Direktfenster (VBE - STRG+G) ausgegeben
' Diese Zeilen mit Debug.Print können natürlich
' gelöscht bzw. auskommentiert werden
'alle Module löschen

Set VB = Application.VBE.ActiveVBProject
For Each Objekt In ThisWorkbook.VBProject.vbComponents
If Objekt.Type = 1 Then VB.vbComponents.Remove _
VB.vbComponents(Objekt.Name)
Next Objekt

End If
End If
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName, blnTMP
Next varTMP
End If
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum so kompliziert?
08.11.2014 12:11:57
RPP63
Hallo!
Um alle Makros zu löschen, wäre es doch einfacher, die Dateien als .xlsx zu speichern?
Gruß, Ralf

AW: Warum so kompliziert?
09.11.2014 18:52:50
Daniel
Hallo Ralf,
das hatte ich mir auch gedacht aber die Makros sind dann immer noch in der Datei enthalten. Wenn ich diese dann als xlsb speichern will oder neue Makros einfügen möchte sind alle wieder aktiv...
Gruß Daniel

Anzeige
Na dann erst mal schließen u.neu öffnen! oWorte
09.11.2014 19:05:28
Luc:-?
:-?

AW: Na dann erst mal schließen u.neu öffnen! oWorte
09.11.2014 21:29:06
Daniel
Das Hat bei mir auch super geklappt aber bei meinem Kollegen nicht. Wir haben es mehrfach probiert mit dem file auf verschiedenen Rechnern.
Gruss

Dann ist evtl noch irgendwo die Originaldatei ...
09.11.2014 22:35:38
Luc:-?
…vorhanden und wird bevorzugt geöffnet, Daniel,
alles andere wäre ziemlich ungewöhnlich ab Xl12…
Gruß, Luc :-?

Anzeige
Siehe Screenshot
10.11.2014 07:41:44
RPP63
Hi!
Bei meinem XL2010 erscheint folgende Message bei SpeichernUnter .xlsx:

Beachte den letzten Satz.
Gruß, Ralf

AW: Siehe Screenshot
10.11.2014 17:32:40
Daniel
Ja genau so habe ich es gemacht. Bei meinen Dateien hat es auch funktioniert aber bei Ihm ging es nicht. Ich werde es noch einmal ausprobieren.
Aus Interesse... ist das was ich vorhatte mit dem code denn möglich?
Gruß
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Makros in Excel löschen


Schritt-für-Schritt-Anleitung

Um alle Makros in Excel zu löschen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub AlleMakrosLoeschen()
       Dim vbComp As Object
       For Each vbComp In ThisWorkbook.VBProject.VBComponents
           ' Nur Module und Klassen löschen
           If vbComp.Type = vbext_ct_StdModule Or vbComp.Type = vbext_ct_ClassModule Then
               ThisWorkbook.VBProject.VBComponents.Remove vbComp
           End If
       Next vbComp
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle AlleMakrosLoeschen und klicke auf "Ausführen".

Diese Anleitung ermöglicht es dir, alle Makros in der aktuellen Excel-Datei schnell zu entfernen.


Häufige Fehler und Lösungen

  • Fehler: "Methode calculation für das Objekt _Application ist fehlgeschlagen"

    • Lösung: Stelle sicher, dass deine Excel-Installation aktuell ist. Manchmal hilft es auch, die Datei zu speichern und Excel neu zu starten.
  • Fehler: "Typen unverträglich"

    • Lösung: Überprüfe, ob du den richtigen Typ für die Variablen verwendet hast. Die Zuweisung von Werten zu Variablen muss mit dem entsprechenden Datentyp übereinstimmen.
  • Makros werden nicht gelöscht

    • Lösung: Stelle sicher, dass du die richtigen Berechtigungen hast, um Änderungen an den VBA-Projekten vorzunehmen. Aktiviere gegebenenfalls die "Entwicklertools".

Alternative Methoden

Falls du eine einfachere Methode suchst, um alle Makros in Excel zu löschen, kannst du die folgenden Alternativen in Betracht ziehen:

  • Speichern als .xlsx: Dies entfernt alle Makros, jedoch bleiben sie in der Originaldatei. Verwende dies nur, wenn du die Makros nicht mehr benötigst.
  • Makros manuell entfernen: Gehe zu Entwicklertools > Visual Basic, wähle die Makros aus und lösche sie manuell.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Makros in Excel löschen kannst:

  1. Einfaches Makro löschen:

    • Verwende das oben genannte Makro, um alle Module in einer Datei zu entfernen.
  2. Makros in mehreren Dateien löschen:

    • Verwende den folgenden Code, um alle Makros in einem ausgewählten Ordner zu löschen:
    Sub AlleMakrosInOrdnerLoeschen()
       Dim strDir As String
       strDir = InputBox("Gib den Pfad zum Ordner ein:")
       ' Füge hier den Code zum Durchlaufen der Dateien und Löschen der Makros hinzu
    End Sub

Tipps für Profis

  • Backup erstellen: Erstelle immer ein Backup deiner Datei, bevor du Makros löschst.
  • Verwende ein Versionskontrollsystem: So kannst du Änderungen leichter nachverfolgen und zurücksetzen.
  • Automatisiere den Prozess: Nutze Zeitgesteuerte Aufgaben, um regelmäßig nicht mehr benötigte Makros zu löschen.

FAQ: Häufige Fragen

1. Kann ich Makros in Excel 2016 oder 2019 löschen?
Ja, die oben beschriebenen Methoden funktionieren in beiden Versionen.

2. Was passiert, wenn ich alle Makros lösche?
Alle Funktionen, die auf Makros angewiesen sind, werden nicht mehr verfügbar sein. Stelle sicher, dass du die Makros nicht mehr benötigst.

3. Wie kann ich Makros aus Excel entfernen, ohne sie manuell zu löschen?
Nutze das bereitgestellte VBA-Makro, um alle Makros in einer Datei oder in mehreren Dateien automatisch zu löschen.

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