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 <strong>Zellen aus Tabellenblatt1</strong> 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 <strong>
"Schließen"
</strong>, öffnet sich meine <strong>vbYesNoCancel-Box</strong>.
- Problem 2: Geht man dann auf <strong>[Abbrechen]</strong>, kommt trotzdem noch die <strong>Standard-Box</strong> (
"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, <strong>nicht mehr die
Excel-Box erscheinen</strong>.
- Problem 3: Geht man auf <strong>[Ja]</strong> und anschließend in der
"Speichern unter"
-Box auf [Speichern], schließt sich diese, aber
nicht die Datei.
- Problem 4: Wurde die Datei <strong>bereits gespeichert</strong> und man klickt auf <strong>[Ja]</strong>, 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