Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
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

SaveAs Dialog exakt wie in Excel

SaveAs Dialog exakt wie in Excel
norman
Hallo alle,
irgend wie stehe ich auf dem Schlauch. Ich will einen SaveAs-File Dialog, der genau wie der Excel-Save-As Dialog funktionert. Habe mit GetSaveAsFilename experimentiert, ist schon nicht schlecht, aaaaaber:
Es fehlt beim "Extras Button" der Eintrag "Allgemeine Optionen" - den brauche ich aber, weil die User das auch angeben können sollen...
Hat jemand eine Idee?
Viele Grüße
Norman
AW: SaveAs Dialog exakt wie in Excel
13.01.2010 06:32:55
fcs
Hallo Norman,
so wird der Original-Speichern-unter-Dialogangezeigt. Der vorgegebene Dateiname ist nicht unbedingt nötig.
Gruß
Franz
Sub test()
Dim Intialfilename As String
Intialfilename = "C:\Users\Public\Test\Test"
If Application.Dialogs(xlDialogSaveAs).Show(Arg1:=Intialfilename) = False Then
MsgBox "Datei wurde nicht gespeichert!", vbInformation + vbOKOnly
Else
'datei wurde gespeichert
End If
End Sub

AW: SaveAs Dialog exakt wie in Excel
15.01.2010 00:27:58
norman
Hallo Franz,
das wäre das was ich brauchen würde, wenn es da nicht ein Problem gäbe. Ich möchte nicht, dass der Dialog schon speichert, sondern dass ich nur den Dateinamen + die Zusatzinformationen der Allgemeinen Optionen erhalte, um danach selbst zu speichern. Geht sowas?
Viele Grüße
Norman
Anzeige
AW: SaveAs Dialog exakt wie in Excel
15.01.2010 00:34:56
norman
Noch mal ergänzt dazu: Ich habe mich in BeforeSave eingehängt und will den SaveAs Dialog selbst steuern. Deshalb klappt das nicht mit xlDialogSaveAs.
Gruß
Norman
AW: SaveAs Dialog exakt wie in Excel
15.01.2010 00:35:35
norman
Jetzt war ich zu blöd den noch offen Haken zu setzen....
AW: SaveAs Dialog exakt wie in Excel
15.01.2010 16:10:06
fcs
Hallo Norman,
das Speichern/Speichern unter in das BeforeSave-Ereignismakro einbauen ist aber etwas tricky.
Zum einen muss du den gestarteten Speicher-Vorgang ggf. canceln und du muss zeitweise die Ereignismakros deaktivieren, damit der im Makro eingebaute Speichervorgang das Ereignis nicht nochmals aufruft (rekursiver Aufruf).
Neben dem Speichern-unter-Dialog, den ich hier aber doch verwenden würde. Gibt es unter VBA auch noch einen GetSaveAs-Dialog, der die Auswahl/Eingabe eines dateinamens erlaubt ohne beim Schließen die Datei zu speichern. Allerdingst gibt es in diesem Dialog nicht die Möglichkeit die Optionen zu ändern/auszuwählen.
Nachfolgend Beispiele für beide Varianten.
Gruß
Franz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vSaveAs
On Error GoTo Fehler
Cancel = True
Application.EnableEvents = False 'Verhindert rekursiven Aufruf von BeforePrint
'Speichernamen im Dialog abfragen/eingebn - Optionen nicht möglich
'vSaveAs = Application.GetSaveAsFilename(fileFilter:="Excel(*.xls;*.xlsx;*.xlsm;*.xlsb)," _
& "*.xls;();*.xlsx;*.xlsx;*.xlsb", _
Title:="Bitte Namen der Datei für Speichern Unter wählen", _
Buttontext:="Speichern Unter")
vSaveAs = Application.GetSaveAsFilename(InitialFileName:=Me.Name, _
fileFilter:="Excel(*.xls;*.xlsx;*.xlsm;*.xlsb)," _
& "*.xls;();*.xlsx;*.xlsx;*.xlsb", _
Title:="Bitte Namen der Datei für Speichern Unter wählen", _
Buttontext:="Speichern Unter")
If vSaveAs  False Then 'Dialog wurde nicht abgebrochen
Me.SaveAs vSaveAs
Else
End If
Err.Clear
Fehler:
With Err
Select Case .Number
Case Is = 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.EnableEvents = True
End Sub
'oder
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vSaveAs
On Error GoTo Fehler
Cancel = True
Application.EnableEvents = False 'Verhindert rekursiven Aufruf von BeforePrint
'Speicher unter im Dialog anzeigen - Optionen möglich
vSaveAs = Application.Dialogs(xlDialogSaveAs).Show(arg1:=Me.Name)
If vSaveAs = False Then MsgBox "Datei wurde nicht gespeichert!", vbInformation + vbOKOnly, _
"D A T E I    S P E I C H E R N"
Err.Clear
Fehler:
With Err
Select Case .Number
Case Is = 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.EnableEvents = True
End Sub

Anzeige
AW: SaveAs Dialog exakt wie in Excel
15.01.2010 16:19:32
Norman
Hey Franz,
genau das was ich machen will, cool :) Aber ich brauche diesen Dialog mit den erweiterten Einstellungen, der User im Fachbereich soll den Unterschied nämlich nicht erkennen, damit er nicht verwirrt ist. Bin für weitere Hinweise dankbar.
Viele Grüße
Norman
AW: SaveAs Dialog exakt wie in Excel
16.01.2010 01:58:01
fcs
Hallo Norman,
welche Aktionen sollen denn zwischen der Auswahl des Speichern-Unter-Namens und dem speichern der Datei noch ausgeführt werden?
Ich sehe jedenfalls kaum eine Chance als tätsächlich den Speichern-Unter-Dialog zu verwenden, wenn du den Anwendern deiner Datei dies vorgaukeln willst.
Warum willst denn die Mitarbeiter deiner Fachabteilungen denn unbedingt optisch durch diesen Dialog zwingen, wenn es gar nicht nötig ist?
Gruß
Franz
Anzeige
AW: SaveAs Dialog exakt wie in Excel
18.01.2010 23:10:33
norman
Hi Franz,
ist weniger das "Durchzwingen" als beim Speichern alle Optionen zur Verfügung stellen. Wäre halt klasse gewesen, wenn die Anwender "nichts unerwartetes" sehen würden. Ich habe ein Plugin geschrieben, dass beim Speichern zusätzliche statistische Daten in eine zentrale Datenbank schreibt. Und da ich das nur beim Speichern machen will hängt das Plugin in BeforeSave. Da ich aber den Original-Dialog so nicht hin bekomme, brauche ich ein Workaround. Habe an so was wie eine Menüleiste für "Datei-Öffnen-Passwort" und "Datei-Speichern-Passwort" gedacht. Finde das aber recht "unglücklich". Vielleicht fällt ja jemandem noch was ein? Dank Dir auf alle Fälle für Deine Hilfe Franz!
Viele Grüße
Norman
Anzeige
"Frage noch offen" wieder vergessen...
18.01.2010 23:11:52
norman
... Sorry ...
AW: "Frage noch offen" wieder vergessen...
19.01.2010 11:57:19
fcs
Hallo Norman,
du kann ja auch die statistischen Daten speichern nachdem der Speichern-Untervorgang abgeschlossen wurde. ggf. muss man die zu speichernden Infos vorher merken.
Allerdings kommt dann immer, wenn man die Datei unter dem gleichen Namen speichern will, eine Meldung dies zu bestätigen. Wenn der gleiche Dateiname nicht möglich sein soll, dann ggf. Datei immer schreibgeschützt öffnen lassen oder eine Mustervorlage verwenden.
Gruß
Franz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vSaveAs, sInfo1(1 To 2), sInfo2(1 To 2)
On Error GoTo Fehler
Cancel = True
Application.EnableEvents = False 'Verhindert rekursiven Aufruf von BeforePrint
'Speicher unter im Dialog anzeigen - Optionen möglich
'Daten der aktiven datei merken
sInfo1(1) = Me.Name
sInfo1(2) = Me.Path
Application.DisplayAlerts = False
vSaveAs = Application.Dialogs(xlDialogSaveAs).Show(arg1:=Me.Name)
If vSaveAs = False Then
MsgBox "Datei wurde nicht gespeichert!", vbInformation + vbOKOnly, _
"D A T E I    S P E I C H E R N"
'Infos speichern wenn speichern abgebrochen wurde
Else
'Infos speichern, wenn Speichern-Untern durchgeführt wurde.
sInfo2(1) = ActiveWorkbook.Name
sInfo2(2) = ActiveWorkbook.Path
MsgBox "Datei wurde gespeichert!" & vbLf _
& "Name alt:  " & sInfo1(1) & vbLf _
& "Name neu:" & sInfo2(1) & vbLf _
& "Verzeichnis alt:  " & sInfo1(2) & vbLf _
& "Verzeichnis neu:" & sInfo2(2), vbInformation + vbOKOnly, _
"D A T E I    S P E I C H E R N" 'Testzeile
End If
Err.Clear
Fehler:
Application.DisplayAlerts = True
With Err
Select Case .Number
Case Is = 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.EnableEvents = True
End Sub

Anzeige

61 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige