Herbers Excel-Forum - das Archiv
Rueckgabewert von Speichern unter

|
Betrifft: Rueckgabewert von Speichern unter
von: Volker Croll
Geschrieben am: 05.11.2003 13:23:59
Hallo zusammen,
im Moment steht mir wohl jemand auf der Leitung.
Wenn ich mit Application.GetSaveAsFilename den "Speichern unter"-Dialog per VBA aufrufe, kann ich den eingegebenen Dateinamen abfragen mit
Filename = Application.GetSaveAsFilename
Wie kann ich den Dateinamen auslesen, wenn der User den Dialog ueber das Menue DATEI -> SPEICHERN UNTER... aufruft? (Moechte mittels Private Sub Workbook_BeforeSave eine Ueberpruefung vornehmen.)
Gruss Volker
Betrifft: AW: Rueckgabewert von Speichern unter
von: Harald Kapp
Geschrieben am: 05.11.2003 14:12:32
Hallo Volker,
der Standard Menüeintrag "Speichern unter..." hat meines Wissens keinen Rückgabewert. Du kannst aber den Menüeintrag durch eine eigene Routine ersetzen:
Ansicht -> Symbolleisten anpassen, dann Datei -> Speichern unter... mit rechter Maustaste anklicken. Jetzt kannst Du dem Eintrag ein Makro zuweisen. Dein eigenes makro ruft nun den eigentlichen "Speichern unter..." Dialog per VBA auf und erhält somit den Dateinamen als Rückgabewert. Nun janst Du die Datei darunter aus VBA heruas speichern - oder nicht, wenn Dir der Name z.B. nicht gefällt.
Die Zuweisung an das Menü lässt sich sicher auch automatisieren, aber damit habe ich leider keine Erfahrung.
Gruß Harald
Betrifft: Noch offen ...
von: Volker Croll
Geschrieben am: 05.11.2003 19:56:55
Hallo Harald,
vorab sorry, war heute nachmittag unterwegs, deshalb jetzt erst Rueckmeldung.
Kann Dir leider nicht ganz folgen
(Zitat) ... Ansicht -> Symbolleisten anpassen, dann Datei -> Speichern unter mit rechter Maustaste anklicken. Jetzt kannst Du dem Eintrag ein Makro zuweisen ...
Sowohl unter Excel 97 als auch 2000 bewirkt ein rechter Mausklick nur die Direkthilfe !?!?
Oder habe ich etwas falsch verstanden?
Gruss Volker
Betrifft: Step by Step
von: Harald Kapp
Geschrieben am: 06.11.2003 06:28:06
Hallo Volker,
hast Recht, war nicht sauber ausgedrückt von mir.
Also
1. Schritt: Ansicht -> Symbolleisten anpassen
Das aufpoppende Formular ignorierst Du. Statt dessen
2. Schritt:
In Excel zunächst mit der linken Maustaste das menü "Datei" aktivieren (die übliche Auswahlliste muss aufklappen)
3. Schritt: Mit der rechten Maustaste in der aufgeklappten Auswahlliste auf den Punkt "Speichern unter..." klicken
4. Schritt: Jetzt mit der linken Maustaste den Punkt "Makro zuweisen" auswählen.
Das Makro für das Ersetzen der originalen "Speichern unter..." Funktion soltest Du vorher bereits geschrieben haben. Eventuell genügt das anscheinend schon vorhandene Makro innerhalb Deiner VBA-Applikation.
Gruß Harald
Betrifft: OK, aber wie geht das in VBA ...
von: Volker Croll
Geschrieben am: 06.11.2003 07:01:47
Guten Morgen Harald,
danke, jetzt ist klar, was Du gemeint hast (kannte ich noch nicht). Nur wie setzte ich dies in VBA um, damit ich es beim Schliessen der Mappe auch wieder zuruecksetzten kann (der Makrorecorder zeichnet bei dieser Aktion leider nichts auf) ?
Gruss Volker
Betrifft: AW: Bitte in der Recherche suchen
von: Harald Kapp
Geschrieben am: 06.11.2003 08:05:07
Sorry,
da müsstest Du bitte mal in der Recherche suchen. Ich weiß, dass man per VBA die Menues umdefinieren kann (also beim Öffnen der Mappe z.B. "Speichern unter..." auf eine eigene Routine umlenken und beim Schließen wieder rückgängig), aber ich bin leider nicht firm darin, wie man das genau macht.
Gruß Harald
Betrifft: So geht's ...
von: Volker Croll
Geschrieben am: 06.11.2003 15:40:11
Hallo Harald,
folgendes funktioniert wie ich es wollte:
Code in "DieseArbeitsmappe" ->
------------------------------
Option Explicit
---------------
Private Sub Workbook_Open()
'Speichern unter im Menue Datei umleiten:
With Application.CommandBars("Worksheet Menu Bar").Controls("Datei")
.Controls("Speichern unter...").OnAction = "EigenesSpeichernUnter"
End With
End Sub
------------------------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Speichern unter wieder zuruecksetzen:
Application.CommandBars("Worksheet Menu Bar").Reset
End Sub
------------------------------------------------------------------------
Code in Modul1 ->
-----------------
Option Explicit
Sub EigenesSpeichernUnter()
Dim Name As Variant
Name = Application.GetSaveAsFilename(, "Excel-Dateien (*.xls),*.xls")
' falls Abbrechen gedrueckt wurde:
If Name = False Then Exit Sub ' deshalb muss Name als Variant deklariert werden !
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=Name
Application.DisplayAlerts = True
End Sub
------------------------------------------------------------------------------
Das ist zwar zunaechst quasi nur der Nachbau des "normalen" Speichern unter..."
aber der vom User fuer die Datei angegebene Name laesst sich mit IFs o.a. abfragen, pruefen usw.
Harald, herzlichen Dank fuer Deine Hilfe !
Gruss Volker