Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Module etc. per Makro löschen

Module etc. per Makro löschen
04.09.2019 12:51:30
Chris
Hallo liebe Excel-Profis
nachdem ihr mir schon bei einigen Herausforderungen geholfen habt, stehe ich jetzt vor einem neuen Problem:
Mein Excel-Formular wird von unterschiedlichen User ausgefüllt und über Klick auf einen Button ein Makro zum Speichern gestartet. In der Datei sind Objekte in "Diese Arbeitsmappe", UserForms sowie zwei Module enthalten.
Wird der Button "Bericht abschließen" geklickt, startet das Makro, welches im Wesentlichen den Speicherpfad und den Dateinamen vorgibt und dann die Datei als .xlsx (FileFormat:=xlOpenXMLWorkbook) speichert.
Jetzt würde ich gerne folgendes integrieren: Bevor die "neue" Datei abgespeichert wird, sollen alle Makros etc. entfernt werden (in der Ausgangsdatei sollen sie vorhanden bleiben). Ich habe dazu auch einen etwas älteren Beitrag von Nepumuk gefunden:
Option Explicit
Public Sub alle_Makros_loeschen()
Dim vbc As Object
With Workbooks("Testmappe.xls").VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3: .VBComponents.Remove .VBComponents(vbc.Name)
Case 100
With vbc.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
End Sub
Allerdings läuft der Makro bei mir nicht durch, der Fehler scheint in der Zeile "With Workbooks ..." zu liegen.
Frage 1: Der Beitrag stammt aus dem Jahr 2004, hat sich hier was Grundsätzliches am Code im Vergleich zu Excel2016 geändert?
Frage 2: Wo und wie muss ich den Code integrieren?
Ich freue mich auf eure Lösungsansätze!
Grüße Chris

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 12:55:13
Rudi
Hallo,
wozu das?
Beim Speichern als .xlsx werden doch sowieso alle VBA-Komponenten entfernt.
Gruß
Rudi
AW: Module etc. per Makro löschen
04.09.2019 13:03:57
Chris
Hallo Rudi,
wenn ich die Datei per Makro als .xlsx speichere, bekomme ich die Excel-Meldung "Die folgenden Features können in Arbeitsmappen ohne Makros nicht gespeichert werden... Klicken Sie auf 'ja', um die Datei als Arbeitsmappe ohne Makros zu speichern." Wenn ich dann auf "Ja" klicke, bleiben die Makros aber trotzdem in der Datei. Auch Buttons, die in der Ursprungsdatei mit Makros belegt waren, können weiterhin angeklickt werden. Deshalb komme ich ja nicht weiter. Hast du vielleicht nen anderen Tip oder weißt woran das liegen kann?
Grüße Chris
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 13:05:10
Chris
Leider muss ich den Beitrag deshalb noch offen lassen.
AW: Module etc. per Makro löschen
04.09.2019 13:12:44
Daniel
HI
setze vor dem Speichern mal
Application.DisplayAlerts = False
und danach wieder
Application.DisplayAlerts = True
das unterbindet die Systemrückfragen und die Datei sollte ohne Meldung als xlsx gespeichert werden.
beachte bitte auch, dass das Löschen der Makros beim Speichern als xlsx nur für die gespeicherte Datei gilt, aber noch nicht für die aktuelle Datei im Arbeitsspeicher!.
Diese hat noch alle Makros und diese sind auch voll funktionsfähig.
Erst beim erneuten Öffnen der Datei wird das Löschen der Makros wirksam.
Gruß Daniel
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 13:18:48
Chris
Ahhh, jetzt! :-)
Ich hab es kapiert und die Datei funktioniert!
Vielen Dank an euch beide!
AW: Module etc. per Makro löschen
04.09.2019 14:34:56
Chris
Sorry, hab doch noch eine Frage zu dem Thema:
Hallo nochmal zusammen,
mein ursprüngliches Problem ist zwar grundsätzlich gelöst, allerdings habe ich im weiteren Verlauf ein neues Problem, dass in die gleiche Richtung geht.
In meiner Datei sind zunächst alle Speicheroptionen blockiert, ausgenommen dem Button "Bereicht abschließen", der ein Makro zum Speichern startet. Damit die Datei aber nicht aus Versehen geschlossen wird, habe ich in "DieseArbeitsmappe" folgenden Code gesetzt:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Der Schichtbericht wurde nicht abgeschlossen. Wenn Sie den Bericht schließen,  _
gehen eingetragene Daten verloren." & vbCrLf & _
" " & vbCrLf & _
"- Klicken Sie auf 'OK' um die Daten zu löschen und den Bericht zu schließen." & vbCrLf  _
& _
" " & vbCrLf & _
"- Klicken Sie auf 'Abbrechen' um den Bericht zu bearbeiten und abzuschließen.", _
Buttons:=vbOKCancel + vbQuestion, _
Title:="Arbeitsmappe schließen") = vbCancel Then
Cancel = True
End If
End Sub
Mein Makro speichert den Bericht im .xlsx ab, also ohne Makros. Wie vorhin gelernt muss die Datei aber zuerst geschlossen und neu geöffnet werden, damit das Löschen der Makros wirksam wird.
Jetzt kommt mein "neues" Problem: Das Makro für die Message Box beim Schließen der Datei läuft noch. Also erscheint die Message Box sowohl wenn ich die Datei selbst schließen will als auch wenn ich sie über Makro schließen möchte (so sollte es aber sein). Deshalb die Frage: Kann ich die Message Box irgendwie stumm schalten oder kann ich das Makro doch irgendwie löschen?
Würde mich über eure Hilfe freuen.
Gruß Chris
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 14:43:50
Daniel
naja, wie man ein Eventmakro stumm schaltet, solltest du doch wissen.
um zu verhindern, dass die Datei beim klicken von OK gespeichert wird, kann man auch folgendes programmieren:
ActiveWorkbook.Saved = True

Excel denkt dann, dass es die Datei schon gespeichert hat und wird nicht versuchen, sie nochmal zu speichern.
Dieser zustand bleibt solange gesetzt, biss in der Datei eine Änderung vorgenommen wird, dann wird das .Saved automatisch auf FALSE gesetzt.
Gruß Daniel
AW: Module etc. per Makro löschen
04.09.2019 15:03:30
Chris
Danke Daniel für deinen Hinweis, aber ich muss zugeben, dass ich diesen nicht ganz verstehe.
In meinem Level steht ja VBA bescheiden und nicht Profi. Das heißt, ich kann mir zwar aus deinen anderen Antworten zusammenreimen, dass Application.EnableEvents ein Event ausschaltet, aber ich weiß nicht mal, was ein Event ist. Ich habe nie gelernt mit VBA umzugehen, sondern mache das Ganze autodidaktisch, in dem ich Foren durchsuche oder so lange rumprobiere, bis es klappt. Und wenn ich an meine Grenzen stoße, bitte ich hier um Hilfe. Vielleicht sollte ich also nächstes Mal mein Level auf "Blutiger Anfänger" korrigieren.
Also formuliere ich meine Frage um: WIE kann ich die Message Box aus "Diese Arbeitsmappe" in einem Makro in Modul2 stumm schalten? Alternativ WIE kann ich das Makro für die Message Box löschen? WAS muss ich WOHIN schreiben?
Für Lösungsvorschläge bin ich echt dankbar.
Grüße Chris
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 15:18:09
Daniel
HI
Events sind Makros, die Automatisch ausgeführt werden, wenn bestimmte Ereignisse (Events) eintreten.
du hattest doch vor kurzem ein ähnliches Problem, mit dem BeforeSave-Event (oder war das ein anderer Chris, der zufällig genauso schreibt wie du?)
Gruß Daniel
AW: Module etc. per Makro löschen
04.09.2019 15:27:12
Chris
Hi Daniel,
ja, das ist richtig. Aber ich hatte mit deinem BeforeSave-Event ja schon so meine Probleme. (Würde hier ja gerne den Affen rein setzen, der sich die Augen zuhält)
Aber woher weiß jetzt Excel, welches Event ich stumm schalten möchte? Wo muss ich die "Stummschaltung" genau hinschreiben?
AW: Module etc. per Makro löschen
04.09.2019 15:35:31
Daniel
Das wurde dir doch anhand des BeforeSave-Events doch gezeigt, mit zwei verschiedenen Methoden.
Gruß Daniel
Anzeige
AW: Module etc. per Makro löschen
04.09.2019 16:06:05
Chris
Wenn ich die Lösung wüsste oder mir zumindest einen Ansatz vorstellen könnte, würde ich nicht das Forum hier bemühen.
Es wäre toll, wenn mir hier tatsächlich jemand helfen könnte. Bitte!
AW: Module etc. per Makro löschen
04.09.2019 17:45:02
onur
Schreibe in ein MODUL (ggf eins hinzufügen):
Public IgnoreWBC as Boolean'Ignoriere Workbook_BeforeClose-Event

Dann direkt nach dem Speichern als .xlsx:
IgnoreWBC = True

und als erste Zeile im Event Workbook_BeforeClose
If IgnoreWBC then Exit Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige