Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1052to1056
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

Nach Dialog Save (Abbrechen)

Nach Dialog Save (Abbrechen)
24.02.2009 12:18:48
Vetter
Hallo
Wenn ich mit einem Commandbutton den Speicherdialog anrufe und nach
Applicatiion.Dialogs(xlDialogSaveA... noch weiteren Code habe geht das perfekt.
Wenn ich aber im Dialog anstatt OK (Abbrechen) drücke läuft der Code weiter. Wie kann ich dies unterbinden.
Nach dem XlDialog kommt eben noch eine ganze Menge an clearcontents Aufforderungen
Application.Dialogs(xlDialogSaveAs).Show
Gruß
Vetter

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Dialog Save (Abbrechen)
24.02.2009 12:20:38
Ramses
Hallo
x = Application.Dialogs(xlDialogSaveAs).Show
if x = False then
... code zum Aufräumen
Exit sub
End if
Gruss Rainer
AW: Nach Dialog Save (Abbrechen)
24.02.2009 18:47:38
Vetter
Hi Rainer
Bin erst jetzt dazu gekommen, Dein Code zu testen.
Bei x bringt er mir den Fehler Variable nicht definiert.
Welche Variable will er noch?
Gruß
Vetter
AW: Nach Dialog Save (Abbrechen)
24.02.2009 19:29:24
Ramses
Hallo
Du musst die Variable halt referenzieren
Sub Demo()
Dim x As Variant
x = Application.Dialogs(xlDialogSaveAs).Show
if x = False then
... code zum Aufräumen
Exit sub
End if
Exit Sub
Gruss Rainer
AW: Nach Dialog Save (Abbrechen)
24.02.2009 21:12:32
Vetter
Hi Rainer
Habe den Code ein wenig erweitert bevor ich in der richtigen Datei alle Löschvorgänge schreibe.
Vieleicht kannst Du mir dabei helfen noch diese kleine Macke zu beheben.
Wenn das Dialogfenster "Speichern geöffnet ist und ich die Datei aus versehen unter den gleichen Namen speichern will, werde ich gefragt ob ich die Datei überschreiben will. Dies sollte auf keinen Fall geschehen.
Darum wollte ich noch zusätzlich eine Sicherung einbauen die, falls die Datei unter dem gleichen Namen abgespeichert werden soll (aus versehen) eine Meldung kommt und danach exit sub.
Bekomme es leider nicht so sonderlich hin.

Private Sub CommandButton1_Click()
Dim DateiAlt As String
Dim DateiNeu As String
Dim x As Variant
DateiAlt = ActiveWorkbook.Name
x = Application.Dialogs(xlDialogSaveAs).Show
If x = True Then
ElseIf DateiNeu = DateiAlt Then
MsgBox "gleicher Name!"
Exit Sub
End If
Worksheets("Tabelle1").Range("b4").ClearContents 'ist nur als Test im Moment
Exit Sub
End Sub


Gruß
Vetter

Anzeige
AW: Nach Dialog Save (Abbrechen)
24.02.2009 22:23:49
Ramses
Hallo
das musst du anders lösen, sonst hast du keine Kontrolle über den Dateinamen
Private Sub A_CommandButton1_Click()
    Dim myFile As FileDialog, x
    Set myFile = Application.FileDialog(msoFileDialogSaveAs)
    With myFile
        .ButtonName = "Speichern als..."
        .Title = "Anderen Dateinamen verwenden"
        .InitialFileName = Date & "_" & ThisWorkbook.Name
        If .Show = -1 Then
            If .SelectedItems(1) = ThisWorkbook.Name Then
                MsgBox "Datei darf nicht unter dem gleichen Namen gespeichert werden", vbCritical + vbOKOnly, "Fehler"
                Exit Sub
            Else
                ThisWorkbook.SaveAs .SelectedItems(1)
            End If
        End If
    End With
End Sub

Gruss Rainer
Anzeige
AW: Super Lösung
24.02.2009 23:09:17
Vetter
Hi Rainer
Habe es getestet. Das ist ja irre. Wie aus dem Zauberkasten.
Eine geniale Lösung.
Danke Dir nochmals.
Gruß
Vetter
AW: @Ramses
25.02.2009 08:26:54
robert
hi,
bei mir geht es nur so
If .SelectedItems(1) = .InitialFileName Then
statt so
If .SelectedItems(1) = ThisWorkbook.Name Then
warum?
gruß
robert
AW: @Ramses
25.02.2009 09:11:07
Ramses
Hallo
Wahrscheinlich, weil du die Mappe noch nicht gespeichert hast.
Du hast eine Mappe1 offen und rufst den Dialog auf.
.SelectedItems(1) gibt in diesem Fall "Mappe1.xls" zurück und Thisworkbook.Name "Mappe1"
If .SelectedItems(1) = .InitialFileName Then
kann nur funktionieren, wenn der Name unterschiedlich zur Vorgabe ist, aber dann kann unter dem gleichen Mappennamen gespeichert werden.!
Das von dir beschriebene Problem kann auftreten, wenn aus einer Vorlage heraus gespeichert werden soll.
Umgehen kannst du das mit einer Abfrage vorher
If right(thisworkbook.name,3) = "xls" then
...Speicherroutine wie oben beschrieben aufrufen
Else
... Speicherrouting aufrufen ohne anschliessende Prüfung des Dateinamens
End If
Für EXCEL 2007 muss das noch unterschieden werden
If val(application.Version) = 12 Then
If Left(right(thisworkbook.name,4),3) = "xls" then
...Speicherroutine wie oben beschrieben aufrufen
Else
... Speicherrouting aufrufen ohne anschliessende Prüfung des Dateinamens
End If
ElseIf Val(Application.Version) < 12 Then
...Speichern wie oben
End If
weil E2007 die Dateinamen mit 4 Buchstaben in der Erweiterung abspeichert,... im Normalfall, die zweite ElseIf Abfrage weil im Kompatibilitätsmodus gespeichert werden kann
Gruss Rainer
Anzeige
AW: @Ramses
25.02.2009 09:31:24
robert
Hi,
danke für info's, aber ich habe die mappe 25.02.2009_Mappe1.xls offen
und rufe das makro auf.
: Item 1 : "C:\Excel-Dateien\25.02.2009_Mappe1.xls" : Variant/String
sieht im lokalem fenster so aus
und ThisWorkbook.Name ist ja 25.02.2009_Mappe1.xls
ferner-kann ich die meldung, dass die datei schon existiert unterbinden?
gruß
robert
AW: @Ramses
25.02.2009 10:50:31
Ramses
Hallo
"...ferner-kann ich die meldung, dass die datei schon existiert unterbinden?..."
Zu diesem Zeitpunkt nicht, das wäre in diesem Falle ein erster Hinweis.
Der Dialog speichert zu diesem Zeitpunkt noch nicht, ... sollte zumindest :-)
Hier mal eine Variante. Die Prüfung müsste mit FullName anstelle von Name gemacht werden.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim myFile As FileDialog, x
    Set myFile = Application.FileDialog(msoFileDialogSaveAs)
    On Error GoTo errCheck
    If InStr(1, ThisWorkbook.Name, "xls") > 0 Then
        Application.EnableEvents = False
        Application.DisplayAlerts = False
        If CurDir <> ThisWorkbook.Path Then
            ChDrive Left(ThisWorkbook.Path, 1)
            ChDir ThisWorkbook.Path
        End If
        With myFile
            .ButtonName = "Neu Speichern als..."
            .Title = "Anderen Dateinamen verwenden"
            .InitialFileName = ""
            ' Alternativ mit Datum und Dateiname
            '.InitialFileName = Date & "_" & ThisWorkbook.Name
            If .Show = -1 Then
                If .SelectedItems(1) = ThisWorkbook.FullName Then
                    MsgBox "Datei darf nicht unter dem gleichen Namen gespeichert werden", vbCritical + vbOKOnly, "Fehler"
                    Cancel = True
                    GoTo saveExit
                Else
                    MsgBox .SelectedItems(1)
                    ThisWorkbook.SaveAs .SelectedItems(1)
                    Cancel = True
                End If
            End If
            Application.EnableEvents = True
        End With
    End If
    saveExit:
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Exit Sub
    
    errCheck:
    MsgBox Err.Number & "; " & Err.Description, vbOKOnly + vbCritical, "Fehler"
    Resume saveExit
End Sub

Gruss Rainer
Anzeige
AW: @Ramses-DANKE-OK....owT
25.02.2009 11:21:38
robert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige