Hallo Freunde der Excelei!
Ich bin dabei für unsere Einrichtung (Internat) ein paar Dateien zu erstellen, die z.B. die Dokumentationsarbeit
erleichtern sollen. Da außerdem zum Teil sehr ungeübte Pädagogen am Werk sind und ich auf den Geschmack
gekommen bin, möchte ich so viele Schritte wie möglich automatisieren.
In diesem Fall soll (auch zwecks Vereinheitlichung der Dateiführung) beim ersten Mal abspeichern der Dateiname und
der Dateityp vorgegeben werden. Hier aus [Zelle] "(Leerzeichen)" [umformatiertes Datum aus Zelle J1], Excel Arbeitsmappe
mit Makros. Funktioniert im Prinzip auch mit den unten gezeigten Codes.
- Problem 1: Bei einer Datei sollen nur die Zellen aus Tabellenblatt1 ausgelesen werden - ist beim Speichernvorgang ein
anderes Tabellenblatt geöffnet, werden die entsprechenden Zellen aus diesem Blatt angesprochen. Ich hätte gedacht das
kriege ich noch hin...
Betrifft nur den 2. Code: Geht man auf "Schließen", öffnet sich meine vbYesNoCancel-Box.
- Problem 2: Geht man dann auf [Abbrechen], kommt trotzdem noch die Standard-Box ("Soll gespeichert werden?") von Excel. Ist
nicht schön, und außerdem, geht man dann auf [Speichern], wird in der "Speichern unter"-Box der standardisierte
Dateinamen-Vorschlag verwendet. Es soll also, nachdem man in meiner Box auf [Abbrechen] geklickt hat, nicht mehr die
Excel-Box erscheinen.
- Problem 3: Geht man auf [Ja] und anschließend in der "Speichern unter"-Box auf [Speichern], schließt sich diese, aber
nicht die Datei.
- Problem 4: Wurde die Datei bereits gespeichert und man klickt auf [Ja], soll einfach gespeichert und die Datei dann
geschlossen werden. Stattdessen öffnet sich das "Speichern unter"-Fenster.
Mit viel Sucherei, ein bisschen eigene Erfahrung und ein bisschen Hilfe bin ich bis hierhin gekommen:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Me.Path = "" Then
On Error Resume Next
Application.EnableEvents = False
Cancel = True
Application.Dialogs(xlDialogSaveAs).Show [A1] & " " & Format([J1], "YYYY-MM"), 52
Application.EnableEvents = True
On Error GoTo 0
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
On Error GoTo Fehler
Select Case MsgBox("Änderungen in " & ThisWorkbook.Name & " speichern?", vbYesNoCancel, ThisWorkbook.Name)
Case vbYes
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show [A1] & " " & Format([J1], "YYYY-MM"), 52
Cancel = True
Case vbNo
ThisWorkbook.Saved = True
Application.Quit
End Select
Fehler:
Application.EnableEvents = True
End If
End Sub
|