PDA

Vollständige Version anzeigen : GetSaveAsFilename / BeforeClose


Luka$
20.02.2008, 00:21
Hallo,

habe ein kleines Excelproblem. Ich habe beim BeforeClose-Ereignis folgenden Code eingebaut. Dieser soll die Datei mit dem aktuellen Datum versehene. Das Problem liegt bei der GetSaveAsFilename Methode. Sie gibt keinen Wert zurück.


'Speichern unter aktuellem Datum

saveYear = Year(Now())
saveCompany = Sheets("Eingabe").Cells(3, 2)
saveTitel = saveYear & saveMonth & saveDay & saveCompany
saveFile = savePath & "\" & saveTitel & ".xls"

Call MsgBox(Application.GetSaveAsFilename(saveFile))
saveDialog = Application.GetSaveAsFilename(saveFile)
Call MsgBox(saveDialog)

If saveDialog <> Falsch Then
Application.ActiveWorkbook.SaveAs saveDialog
Call MsgBox("Gespeichert unter : " & saveDialog)
Else
Application.ActiveWorkbook.Saved = True
End If



Wenn ich im Direktbereich

?Application.GetSaveAsFilename

eingebe, wird der korrekte Pfad ausgegeben. Im oben gezeigten code wird allerdings fast nie überhaupt ein Wert zurückgegeben.

Woran kann das liegen?

MfG
Luka$

jinx
20.02.2008, 06:00
<font size="2" face="Century Gothic">Moin, Luka$,

funktioniert mit dem folgenden Code bei mir unter Excel2002:

'Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Speichern unter aktuellem Datum

saveDate = Format(Date, "YYMMDD")
savePath = "C:\Temp"
saveCompany = Sheets("Eingabe").Cells(3, 2)
saveTitel = saveDate & saveCompany
saveFile = savePath & "\" & saveTitel & ".xls"

' Call MsgBox(Application.GetSaveAsFilename(saveFile))
saveDialog = Application.GetSaveAsFilename(saveFile)
' Call MsgBox(saveDialog)

If saveDialog <> Falsch Then
Application.ActiveWorkbook.SaveAs saveDialog
Call MsgBox("Gespeichert unter : " & saveDialog)
Else
Application.ActiveWorkbook.Saved = True
End If
End Sub
Ich würde allerdings vor dem Einfügen eines \ prüfen, ob dieser nicht schon als letztes Zeichen im Pfad vorhanden ist... Und zusätzlich solltest Du auf das Abbrechen des Users reagieren.</font>

Luka$
20.02.2008, 12:37
Hi jinx,

vielen Dank für deine schnelle Antwort. Leider funktioniert deine Version bei mir auch nicht. Es ist nach wie vor das problem das die Methode
GetSaveAsFilename keine Rückgabe produziert. Also die beiden MsgBoxen keinen Wert enthalten.

Reagiere ich nicht auf das Abbrechen des Nutzers mit der If Abfrage. Wenn Abbrechen gedrückt wird, sollte normalerweise Falsch zurückggeben werden. Dann wird in meinem Fall nicht gespeichert ?!?

MfG
Luka$

jinx
20.02.2008, 13:53
<font size="2" face="Century Gothic">Moin, Luka$,

bezogen auf das Abfangen: wenn ich es an neuen Mappen teste, finde ich es schade, wenn diese ohne weitere Info geschlossen werden.

Ich habe den angegebenen Code mit neuen Mappen in Excl97, Excel2000 und Excel2002/XP getestet - die Mappe wurde jeweils unter dem angegebenen Namne im Pfad gespeichert - selbst bei einem nicht vorhandenen Ordner wurde dann unter Eigene Dateien abgespeichert. Zur Zeit bin ich ratlos wegen der Ursache...</font>

Luka$
20.02.2008, 14:17
Ich kenne mich leider nicht mit den Ereignissen aus. Gibt es denn noch ein anderes was beim schließen der Mappe ausgeführt wird?

jinx
20.02.2008, 14:26
<font size="2" face="Century Gothic">Moin, Luka$,

ab Excel97 sollte das Ereignis Workbook_BeforeClose(Cancel As Boolean) in DieseArbeitsmappe genutzt werden. Aus Kompatibilitätgründen gibt es noch die Möglichkeit des Makros Auto_Close() in einem normalen Modul.</font>

Luka$
21.02.2008, 12:48
Okay, das werde ich nochmal versuchen, oder rätst du davon ab?

jinx
21.02.2008, 16:41
<font size="2" face="Century Gothic">Moin, Luka$,

nein, eher nur davon, etwas unversucht zu lassen... ;)</font>