Anzeige
Archiv - Navigation
1372to1376
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

beforeclose

beforeclose
24.07.2014 09:50:55
na
Hallo zusammen,
habe bereits im Forum nach meinem Problem gesucht bin auch eine Lösung gestossen, allerdings funktioniert diese bei mir nicht. Ich möchte vor dem schliessen eine Msgbox, die fragt, ob gespeichert werden soll.
Code:
Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "Datei speichern?"
If MsgBox("Datei speichern?", vbYesNo, "Speichern") = vbYes Then
Call speichern
End If
End Sub

Wenn man nun schliesst kommt nur die Standardmeldung, ob man die änderung speichern will.
Vielen Dank im Voraus,
Gruss stefan

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: beforeclose
24.07.2014 09:53:47
Daniel
Excel fragt doch automatisch beim Schließen, ob es die Datei speichern soll.
Das musst du nicht extra programmieren.
Gruß Daniel

AW: beforeclose
24.07.2014 10:10:43
na
Ja, da hast du recht. Aber ich möchte es gern programmieren, da das Makro speichern die Datei ohne Makros mit dem aktuellen Datum als Kopie speichert.
In das Workbook fügt man Daten ein, wertet sie durch verschiedene Makros aus. Anschliessend sollen die erstellten Diagramme und Worksheets ohne makros gespeichert werden.
Funktioniert auch alles (auch das Makro speichern). Es soll aber sicherheitshalber vor dem schliessen gefragt werden, ob gespeichert wurde. wenn nicht soll das Makro "speichern" ausgeführt werden.
vollständigkeitshalber hier der code des speicherns
Sub speichern()
Sheets.Copy
ActiveWorkbook.SaveCopyAs Filename:="C:...-\" & Format(Date, "yymmdd") & "_Test" & ".xls"
ActiveWorkbook.Close savechanges:=False
End Sub
Gruss Stefan

Anzeige
warum denn das ?
24.07.2014 10:10:54
Matthias
Hallo
Funktioniert doch.
Wo hast Du denn den Code stehen? Gehört in DieseArbeitsmappe
Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Datei speichern?", vbYesNo, "Speichern") = vbYes Then
Call speichern
End If
End Sub
und diese Sub() in ein allgem. Modul
Option Explicit
Sub speichern()
ThisWorkbook.Save
MsgBox "Datei wurde gespeichert"
End Sub
und für was soll das gut sein?
Die doppelte MsgBox war auch nicht nötig!
Willst Du speichern obwohl nichts geändert wurde?
Gruß Matthias

Anzeige
AW: warum denn das ?
24.07.2014 10:15:20
na
Hallo Matthias,
ja du hast Recht, hatte das Sub() im Eifer des Gefechts in mein Modul eingefügt. Danke für deine schnelle Hilfe!! Ja doppelte Msgbox is überflüssig ;)
Erklärung habe ich bereits gegeben, ich denke so dürfte es nun funktionieren.
Danke und Gruss

AW: warum denn das ?
24.07.2014 10:49:31
UweD
Hallo
du kannst das natürlich so gestalten, dass die Box nur kommt, wenn noch nicht gespeichert wurde.
Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = False Then
If MsgBox("Datei speichern?", vbYesNo, "Speichern") = vbYes Then
Call speichern
Else 'nur bei Bedarf
ThisWorkbook.Saved = True 'Änderungen werden verworfen
End If
End If
End Sub
Gruß UweD

Anzeige
AW: warum denn das ?
24.07.2014 11:15:02
na
Hallo Uwe,
das ist natürlich eleganter. Danke dafür =)
ich weiss nicht warum, aber aus irgendwelche gründen verhaus mir grad mein speichern.
Sub speichern()
Sheets.Copy
ActiveWorkbook.SaveCopyAs Filename:="C:...-\" & Format(Date, "yymmdd") & "_Test" & ".xls"
ActiveWorkbook.Close savechanges:=False
End Sub
Es speichert als xls, aber dennoch sind die Makros noch vorhanden. Ich weiss, dass dieses Thema hier schon sehr oft behandelt wurde, aber i.wie bekomme ich das nicht auf die Reihe.
Habe sowohl
Sub speichern ()
Sheets.Copy
Set WB = ActiveWorkbook
For n = WB.VBProject.vbComponents.Count To 1 Step -1
For i = 1 To WB.VBProject.vbComponents(n).CodeModule.CountOfLines
If WB.VBProject.vbComponents(n).Type  1 _
And WB.VBProject.vbComponents(n).Type  3 Then _
WB.VBProject.vbComponents(n).CodeModule.DeleteLines 1
Next
Next
WB.SaveAs Filename:="C:\Eigene Dateien\" & Format(Date - 1) & ".XLS"
WB.Close savechanges:=False
End Sub
als auch
Sub ModulLoeschen()
Workbooks("Mappe1.xls").SaveAs "Test.xls"
With Application.VBE.ActiveVBProject
.vbComponents.Remove .vbComponents("Modul2")
End With
End Sub
erfolglos ausprobiert.
beim 2. Versuch löscht es mir aus dem aktuellen Workbook die Makros, beim 1. Versuch sind die Makros noch vorhanden und funktionieren.
Vllt sieht ja jemand ne Lösung.
Hier die Datei, an der ich arbeite: https://www.herber.de/bbs/user/91701.xlsm
Grüsse und Danke

Anzeige
AW: warum denn das ?
24.07.2014 11:23:34
Nepumuk
Hallo,
SaveCopyAs speichert eine Kopie der Mappe und wenn im Original Makros drin sind, dann sind die natürlich auch in der Kopie.
Du musst die Mappe mit SaveAs speichern, da kannst du das Format angeben. Und nur eine andere Dateiendung anzugeben hilft nicht, du musst beim Parameter FileFormat als Wert xlOpenXMLWorkbook benutzen. Damit wird die Mappe als garantiert makrofreie .xlsx gespeichert.
Gruß
Nepumuk

AW: warum denn das ?
24.07.2014 12:02:06
na
Hi,
danke für die Antwort!
Mit
Sub speichern()
Sheets.Copy
ActiveWorkbook.SaveAs Filename:="X:\A3\04_shared\012_MWT\001_team\Praktikanten\S. Glück MWG-P4\ _
WZ-Beanstandungen\" & Format(Date, "yymmdd") & "_Test" & ".xls", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close savechanges:=False
End Sub
Speichert es mir die die Datei ohne Makros (laut VBA-Editor Strukturbaum), sobald ich aber auf eine Steuerelement klicke, öffnet sich die ursprüngliche Datei und versucht das Makro welches mit dem Steuerelement verbunden ist zu öffnen. Wie kann ich das verhindern?
Gruss und Danke

Anzeige
AW: warum denn das ?
24.07.2014 12:40:19
na
Hi,
danke für die Antwort!
Mit
Sub speichern()
Sheets.Copy
ActiveWorkbook.SaveAs Filename:="X:\A3\04_shared\012_MWT\001_team\Praktikanten\S. Glück MWG-P4\ _
WZ-Beanstandungen\" & Format(Date, "yymmdd") & "_Test" & ".xls", FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close savechanges:=False
End Sub
Speichert es mir die die Datei ohne Makros (laut VBA-Editor Strukturbaum), sobald ich aber auf eine Steuerelement klicke, öffnet sich die ursprüngliche Datei und versucht das Makro welches mit dem Steuerelement verbunden ist zu öffnen. Wie kann ich das verhindern?
Gruss und Danke

Anzeige
AW: warum denn das ?
24.07.2014 12:45:06
Nepumuk
Hallo,
diese "Formularsteuerelemente" musst du natürlich vor dem Speichern separat löschen.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige