Microsoft Excel

Herbers Excel/VBA-Archiv

Excel stürzt nach SaveAs-Dialog ab | Herbers Excel-Forum


Betrifft: Excel stürzt nach SaveAs-Dialog ab von: Ben
Geschrieben am: 25.07.2012 11:38:56

Hallo zusammen!
Nach mehrfacher Empfehlung des Herber-Forums bin ich nun auch ein Teil dieser Community geworden - natürlich gleich mit der Hoffnung auf Hilfe! :-)

Ich habe beruflich ein Excel Template zu erstellen, dass sowohl unter Excel 2007 als auch unter Excel 2003 laufen muss (Wir arbeiten mit 2007, die Töchter mit 2003, aber wir bearbeiten die selbe Datei).
Zur Kompatibilität möchte ich erreichen, dass die Arbeitsmappe, die aus der Vorlage erzeugt wird (Vorlage im Dateiformat *.xltm), immer als *.xlsm gespeichert wird - auch dann, wenn sie mit Excel 2003 bearbeitet wurde. Dazu habe ich folgenden VBA-Code geschrieben:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Vorbelegung Dateiname und Dateityp beim Speichern

Dim Komponententyp As String
Dim Kunde As String
Dim Auftragsnummer As String
Dim Revision As String
Dim Dateiname As String

'Variablen zur Benennung des Dateinamens bestimmen
If Sheets("Data-Sheet source").Range("E84").Value = " -  -  - " Then
    Serialnummern = "xxxxx"
    Else
    Serialnummern = Sheets("Data-Sheet source").Range("E84")
End If
Komponententyp = Sheets("Data-Sheet source").Range("N84")
Kunde = Sheets("Data-Sheet source").Range("J84")
Auftragsnummer = Sheets("Data-Sheet source").Range("R84")
Revision = Application.WorksheetFunction.Max(Sheets("Data-Sheet source").Range("X3:X125"))
Dateiname = Serialnummern & "_" & Komponententyp & "_" & Auftragsnummer & "_" & Kunde _
& "_Rev. " & Revision & ".xlsm"

'Speichern-Dialog öffnen, falls Datei neu angelegt werden muss bzw. verändert wurde
If ThisWorkbook.Name <> Dateiname Then
    Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
    Exit Sub
    Else
    Exit Sub
End If

End Sub

Der Code prüft, ob eine Änderung der Datei erfolgt ist, indem die Dateinamen verglichen werden. Bei einer erfolgten Änderung steigt der Parameter Revision um 1 nach oben -> die Datei weiß, dass der Dialog "Speichern unter" ausgeführt werden soll. Falls keine Änderung erfolgt ist, die eine Änderung des Dateinamens notwendig macht, soll die Datei einfach nur gespeichert werden - ohne den "Speichern unter"-Dialog.

Nun zur Fehlerbeschreibung:
Ich öffne die *.xltm-Vorlage mit Ecxel 2007 und klicke auf Speichern. Da der Dateiname der Vorlage nicht dem gewünschten Dateinamen entspricht, öffnet sich der "Speichern unter"-Dialog. Der Dateiname und auch der Dateityp wird korrekt vorbelegt.
Wird der Dialog nun mit "speichern" bestätigt, speichert Excel die Datei korrekt als *.xlsm - aber stürzt direkt danach ab. Die Datei selbst aber ist richtig abgespeichert und kann auch ganz normal wieder geöffnet werden.
Dieser Fehler tritt nicht auf, wenn ich den vorbelegten Dateinamen ändere und das Dateiformat auf *.xltm ändere.

Der erzeugte Dateiname scheint mir aber nicht fehlerhaft zu sein. Hier ein Beispiel eines generierten Dateinamens:
"xxxxx_V 100 ALS SS P1 _82131254_xxxxx_Rev. 0.xlsm"
Woran kann das liegen bzw. wie bekomme ich dieses Problem beseitigt?

Herzlichen Dank für jegliche Hilfe!
Gruß, Ben

  

Betrifft: AW: Excel stürzt nach SaveAs-Dialog ab von: UweD
Geschrieben am: 25.07.2012 11:57:29

Hallo

durch das "Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
" wird wieder das Ereignis " Workbook_BeforeSave " ausgeführt.
Du befindest dich in einem loop.

Durch diese Ergänzungen müsste es gehen.

Application.EnableEvents = False '***
Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True '***


Gruß UweD


  

Betrifft: AW: Excel stürzt nach SaveAs-Dialog ab von: Ben
Geschrieben am: 25.07.2012 12:02:18

Hallo Uwe,

herzlichen Dank erstmal für deine schnelle Antwort!
Ich habe die gepostetend Code-Zeilen bei mir eingefügt, aber leider ohne Erfolg.
Der Fehler ist noch gleich wie zuvor.

Hast du noch einen Gedanken dazu?

Gruß, Ben


  

Betrifft: AW: Alternativer Lösungsweg möglich? von: Ben
Geschrieben am: 25.07.2012 14:20:51

Hallo zusammen,

gibt es vielleicht noch einen anderen Lösungsweg, als das obige Makro?
Ziel ist es, dass diese Datei immer als *.xlsm gespeichert wird, egal welche Excelversion der User zur Verfügung hat.
Vorgaben wären:

  • Der Dateiname muss sich immer aus den oben genannten Bestandteilen zusammen setzen.

  • Wenn der zusammengesetzte Dateiname dem realen Dateinamen entspricht, dann einfach speichern.

  • Wenn der zusammengesetzte Dateiname vom realen Dateinamen abweicht, "Speichern unter"-Dialog öffnen und Dateinamen vorgeben (=zusammengesetzter Dateiname), sowie Dateityp (=xlsm) vorgeben.


  • Danke für jede Hilfe!
    Gruß, Ben


      

    Betrifft: AW: Alternativer Lösungsweg möglich? von: Wenderhold
    Geschrieben am: 25.07.2012 15:03:51

    Hallo Ben

    warum denn einen Dialog anzeigen ?

    Dateinamen zusammenbauen

    ist der gleich
    workbook.save(dateiname)
    else
    workbook.saveas(dateiname)
    endif

    Mfg

    wd


      

    Betrifft: AW: Alternativer Lösungsweg möglich? von: Ben
    Geschrieben am: 25.07.2012 15:07:44

    Hallo Wenderhold,

    ich dachte, dass der Dialog sinnvoll ist, da der User auswählen können muss, wo er die Datei speichern möchte. Mit dem Workbook.saveas(dateiname) speichert er die Datei doch einfach im aktuellen Pfad, oder?

    Gruß, Ben


      

    Betrifft: AW: Alternativer Lösungsweg möglich? von: Ben
    Geschrieben am: 25.07.2012 15:32:39

    Kernpunkt ist halt, dass der User bei jedem Speichern einer neuen Version den Speicherort auswählen können muss bzw. erkennen muss, dass er jetzt eine neue Revision der Datei anlegt.

    Gruß, Ben


      

    Betrifft: AW: Alternativer Lösungsweg möglich? von: fcs
    Geschrieben am: 26.07.2012 08:28:08

    Hallo Ben,

    ein Problem ist möglicherweise, wie die Vorlage geöffnet wird
    - via Datei öffnen - Dann sollte die Vorlage-Datei unbedingt schreibgeschützt sein (im Dateimanager)

    - via Datei neu

    Mit folgenden Anpassungen werden die Dialoge angezeigt, ohne das Excel abstürzt.

    Getestet unter Excel 2010, ob das unter Excel 2003 funktioniert weiss ich nicht. evtl. muss hier eine Versionsprüfung eingebaut werden, und etwas anders vorgegangen werden-

    Gruß
    Franz

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
          'Vorbelegung Dateiname und Dateityp beim Speichern
          Dim Komponententyp As String
          Dim Kunde As String
          Dim Auftragsnummer As String
          Dim Revision As String
          Dim Dateiname As String
          Dim Serialnummern As String
          'Variablen zur Benennung des Dateinamens bestimmen
          If Sheets("Data-Sheet source").Range("E84").Value = " -  -  - " Then
              Serialnummern = "xxxxx"
          Else
              Serialnummern = Sheets("Data-Sheet source").Range("E84")
          End If
          Komponententyp = Sheets("Data-Sheet source").Range("N84")
          Kunde = Sheets("Data-Sheet source").Range("J84")
          Auftragsnummer = Sheets("Data-Sheet source").Range("R84")
          Revision = Application.WorksheetFunction.Max(Sheets("Data-Sheet source").Range("X3:X125")) _
    
          Dateiname = Serialnummern & "_" & Komponententyp & "_" & Auftragsnummer & "_" & Kunde _
          & "_Rev. " & Revision & ".xlsm"
          'Speichern-Unter-Dialog öffnen, falls Datei neu angelegt werden muss bzw. verändert wurde
          If ThisWorkbook.Name <> Dateiname Then
            If SaveAsUI = True Then
              If Me.Path = "" Then
                Cancel = True
                Application.EnableEvents = False
                Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
                Application.EnableEvents = True
              End If
            Else
              Cancel = True
              Application.EnableEvents = False
              Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
              Application.EnableEvents = True
            End If
          End If
    End Sub
    



      

    Betrifft: AW: Teilerfolg - Problem noch bei Excel 2003 von: Ben
    Geschrieben am: 26.07.2012 09:32:10

    Hallo Franz,


    vielen Dank für deine Antwort - für Excel 2007 funktioniert dein Code perfekt! Vielen Dank dir dafür.

    Bei Excel 2003 kommt tatsächlich eine Fehlermeldung bei folgender Zeile:
    Application.Dialogs(xlDialogSaveAs).Show (Dateiname), xlOpenXMLWorkbookMacroEnabled
    Die Fehlermeldung lautet: "Die Show-Methode des Dialog-Objekts konnte nicht ausgeführt werden."
    Das bedeutet, dass VBA von Excel 2003 mit diesem Befehl nichts anfangen kann, oder?
    Gibt es hier einen entsprechenden Code für die Versionen 97, 2000, 2002 und 2003?
    Wie ich die Versionen abfragen kann, kenne ich. Das würde ich per Select Case Application.Version machen.

    Und dann ist mir nochwas aufgefallen:
    Wenn ich ein *.xlsm in Excel 2003 abspeichere, dann wird das Kennwort des Arbeitsmappenschutzes nachfolgend immer beim Öffnen der gespeicherten Datei abgefragt - was aber ja nicht Sinn und Zweck der Geschichte ist. Öffnen sollte es ja jeder können - es soll nur die Arbeitsmappenstruktur geschützt sein.


    Vielen Dank für die Hilfe bisher - ich hoffe, dass ihr mir hier noch etwas weiterhelfen könnt.
    Liebe Grüße, Ben


      

    Betrifft: Automat. WriteResPasswort setzen unterbinden von: Ben
    Geschrieben am: 26.07.2012 15:56:01

    Hallo zusammen,


    ein Problem habe ich bereits lösen können, und zwar der Umgang mit dem SaveAs-Dialog unter Excel 2003.
    Jetzt gilt es noch folgende 2 Probleme in den Griff zu bekommen:

  • Wenn ich eine mit Excel 2003 erstellte Datei öffne, fragt er ein Kennwort ab (das Kennwort, das als Arbeitsmappenschutz hinterlegt ist).

  • Wenn ich unter Excel 2003 einmal den SaveAs-Dialog abbreche, und erneut auf speichern klicke, ruft er den SaveAs-Dialog nicht mehr auf, sondern speichert unter dem alten Dateinamen, obwohl der alte nicht gleich dem neuen ist und der deshalb den SaveAs-Dialog öffnen müsste!


  • Wie bekomme ich diese Fehler noch raus?
    Ich vermute, dass beim Speichern aus Excel 2003 als *.xlsm ein WriteResPassword vergeben wird. Kann man das unterbinden?

    Der Code, den ich verwende sieht inzwischen so aus:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
          
          'Vorbelegung Dateiname und Dateityp beim Speichern
          Dim Komponententyp As String
          Dim Kunde As String
          Dim Auftragsnummer As String
          Dim Revision As String
          Dim Dateiname As String
          Dim Serialnummern As String
          
          'Variablen zur Benennung des Dateinamens bestimmen
          If Sheets("Data-Sheet source").Range("E84").Value = " -  -  - " Then
              Serialnummern = "xxxxx"
          Else
              Serialnummern = Sheets("Data-Sheet source").Range("E84")
          End If
          Komponententyp = Sheets("Data-Sheet source").Range("N84")
          Kunde = Sheets("Data-Sheet source").Range("J84")
          Auftragsnummer = Sheets("Data-Sheet source").Range("R84")
          Revision = Application.WorksheetFunction.Max(Sheets("Data-Sheet source").Range("X3:X125")) _
    
          Dateiname = Serialnummern & "_" & Komponententyp & "_" & Auftragsnummer & "_" & Kunde _
          & "_Rev. " & Revision & ".xlsm"
          
          'Speichern-Unter-Dialog öffnen, falls Datei neu angelegt werden muss bzw. verändert wurde
          If ThisWorkbook.Name <> Dateiname Then
            If SaveAsUI = True Then
              If Me.Path = "" Then
                Cancel = True
                Select Case Application.Version
                    Case "11.0" 'Excel 2003
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "10.0" 'Excel 2002
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "9.0" 'Excel 2000
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "8.0" 'Excel 97
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case Else
                        Application.EnableEvents = False
                        Application.Dialogs(xlDialogSaveAs).Show (Dateiname),  _
    xlOpenXMLWorkbookMacroEnabled
                        Application.EnableEvents = True
                End Select
              End If
            Else
              Cancel = True
                Select Case Application.Version
                    Case "11.0" 'Excel 2003
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "10.0" 'Excel 2002
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "9.0" 'Excel 2000
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case "8.0" 'Excel 97
                        Application.EnableEvents = False
                        With Application.Dialogs(xlDialogSaveAs)
                        If .Show(Dateiname, 52) = False Then Exit Sub
                        End With
                        Application.EnableEvents = True
                    Case Else
                        Application.EnableEvents = False
                        Application.Dialogs(xlDialogSaveAs).Show (Dateiname),  _
    xlOpenXMLWorkbookMacroEnabled
                        Application.EnableEvents = True
                End Select
            End If
          End If
    End Sub


    Vielleicht kann man ja auch die Select Case Application.Version-Geschichte noch etwas kürzen bzw. optimieren?


    Liebe Grüße und vielen Dank für eure Hilfe,
    Ben


      

    Betrifft: AW: Automat. WriteResPasswort setzen unterbinden von: fcs
    Geschrieben am: 26.07.2012 19:43:49

    Hallo Ben,

    dein 2. Problem (Speichern-Unter-Dialog wird nicht angezeigt) tritt auf, weil du nach Abruch von Speichern-unter per "Exit Sub" das Makro verläßt. Dadurch werden die deaktivierten Ereignismakros nicht wieder aktiviert. Somit wird beim nächsten Speichern das Workbook_BeforeSave-Makro nicht aufgerufen.

    Die Sprunganweisung muss also auf eine entsprechende Zeile erfolgen, die die Ereignismakros wieder aktiviert.

    Zum 2. Problem (Passwortabfrage beim Öffnen von unter Excel 2003 gespeicherten Dateien kann ich nichts konkretes sagen, da die Erinnerung schon etwas gelitten hat und ich nur wenige Erfahrungen mit dem Zusatztool zum Öffnen/Speichern von Dateien im 2007er Format gesammelt habe.
    Ich hab im Code jetzt nach dem Aufruf des Speichern-Dialogs Anweisungen zum Zurücksetzen der Passwörter für Lesen/Schreiben eingefügt und erneuten Speichern eingefügt. Evtl. klappt das ja.

    Die Case-Anweisungen hab ich eingekürzt/umstrukturiert. Da für alle ältern Versionen die gleichen Anweisungen ausgeführt werden sollen, kann man die natürlich auch mit einem Case erschlagen.

    Gruß
    Franz

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
      'Vorbelegung Dateiname und Dateityp beim Speichern
      Dim Komponententyp As String
      Dim Kunde As String
      Dim Auftragsnummer As String
      Dim Revision As String
      Dim Dateiname As String
      Dim Serialnummern As String
      
      'Variablen zur Benennung des Dateinamens bestimmen
      If Sheets("Data-Sheet source").Range("E84").Value = " -  -  - " Then
          Serialnummern = "xxxxx"
      Else
          Serialnummern = Sheets("Data-Sheet source").Range("E84")
      End If
      Komponententyp = Sheets("Data-Sheet source").Range("N84")
      Kunde = Sheets("Data-Sheet source").Range("J84")
      Auftragsnummer = Sheets("Data-Sheet source").Range("R84")
      Revision = Application.WorksheetFunction.Max(Sheets("Data-Sheet source").Range("X3:X125"))
    
      Dateiname = Serialnummern & "_" & Komponententyp & "_" & Auftragsnummer & "_" & Kunde _
          & "_Rev. " & Revision & ".xlsm"
      
      'Speichern-Unter-Dialog öffnen, falls Datei neu angelegt werden muss bzw. verändert wurde
      If ThisWorkbook.Name <> Dateiname Then
        If SaveAsUI = True Then
          If Me.Path = "" Then 'xlmt-Datei wurde via Datei-->Neu als neue Datei angelegt
            Cancel = True
            Application.EnableEvents = False
            Select Case Val(Left(Application.Version, 2))
              Case Is < 12 ''Excel 97 bis Excel 2003
                With Application.Dialogs(xlDialogSaveAs)
                  If .Show(Dateiname, 52) = False Then GoTo Weiter_1
                End With
                With ThisWorkbook
                  .Password = ""
                  .WritePassword = ""
                  .Save
                End With
              Case Else
                Application.Dialogs(xlDialogSaveAs).Show (Dateiname), 52 ' _
    xlOpenXMLWorkbookMacroEnabled
            End Select
    Weiter_1:
            Application.EnableEvents = True
          End If
        Else
          Cancel = True
          Application.EnableEvents = False
          Select Case Val(Left(Application.Version, 2))
            Case Is < 12 ''Excel 97 bis Excel 2003
              ThisWorkbook.WritePassword = ""
              ThisWorkbook.Password = ""
              With Application.Dialogs(xlDialogSaveAs)
                If .Show(Dateiname, 52) = False Then GoTo Weiter_2
                With ThisWorkbook
                  .Password = ""
                  .WritePassword = ""
                  .Save
                End With
              End With
            Case Else
              Application.Dialogs(xlDialogSaveAs).Show (Dateiname), 52 ' _
    xlOpenXMLWorkbookMacroEnabled
          End Select
    Weiter_2:
          Application.EnableEvents = True
        End If
      End If
    End Sub
    



      

    Betrifft: Automatisches Öffnen-Passwort noch da von: Ben
    Geschrieben am: 27.07.2012 09:04:42

    Hallo Franz,

    Danke für deine Mühe!
    ich hab den Code mal übernommen und getestet. Der Speichern-Dialog klappt nun einwandfrei!
    Es bleibt also nur noch die Geschichte mit der automatischen Passwort vergabe. Der Fehler taucht nämlich noch immer auf.

    Nochmals die Fehlerbeschreibung:
    Beim Speichern einer Arbeitsmappe aus Excel 2003 als *.xlsm (2007er-Format) vergibt das 2003er Excel ein Passwort zum Öffnen.

    Wie könnte man das noch entfernen?
    Vielen Dank für eure tatkräftige Hilfe!

    Gruß, Ben


      

    Betrifft: SaveAs-Dialog WriteResPasswort leeren? (Excel2003) von: Ben
    Geschrieben am: 30.07.2012 11:26:59

    Hallo zusammen,

    ich suche für das angehängte Makro noch eine Möglichkeit, im aufgerufenen SaveAs-Dialog für Excel < Version 12 (siehe nachfolgende Code-Zeile) anzugeben, dass das WriteResPasswort = "" sein soll.
    Code-Zeile: If .Show(Dateiname, 52) = False Then GoTo Weiter_1
    Bei dieser Code-Zeile setzt Excel 2003 beim speichern als *.xlsm immer das Arbeitsmappenschutzkennwort als WriteResPasswort. Das möchte ich natürlich unterbinden. Der User muss die Datei bearbeiten können, ohne zuvor ein Kennwort eingeben zu müssen.


    Meine bisherigen Versuche sehen wie folgt aus:

  • If .Show(Dateiname, 52, "", "") = False Then GoTo Weiter_1

  • If .Show(Dateiname, 52, Password = "", WriteResPassword = "") = False Then GoTo Weiter_1

  • Keiner hat den erhofften Erfolg gebracht. Beim zweiten Versuch gibt er sogar irgendein Kennwort bei WriteResPasswort an, dass weder im Code noch im Blatt irgendwo vorkommt.


    Wie sieht die richtige Code-Zeile aus, um das WriteResPassword-Feld zu leeren, bzw. ihm zu sagen, dass keines gesetzt werden soll?

    Vielen Dank!
    Gruß, Ben


    PS: Hier der ganze Code zum besseren Verständis.
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
       'Vorbelegung Dateiname und Dateityp beim Speichern
       Dim Komponententyp As String
       Dim Kunde As String
       Dim Auftragsnummer As String
       Dim Revision As String
       Dim Dateiname As String
       Dim Serialnummern As String
       
       'Variablen zur Benennung des Dateinamens bestimmen
       If Sheets("Data-Sheet source").Range("E84").Value = "" Then
            Serialnummern = "xxxxx"
            Else
            Serialnummern = Sheets("Data-Sheet source").Range("E84")
       End If
       Komponententyp = Sheets("Data-Sheet source").Range("N84")
       Kunde = Sheets("Data-Sheet source").Range("J84")
       Auftragsnummer = Sheets("Data-Sheet source").Range("R84")
       Revision = Application.WorksheetFunction.Max(Sheets("Data-Sheet source").Range("X3:X125"))
     
       Dateiname = Serialnummern & "_" & Komponententyp & "_" & Auftragsnummer & "_" & Kunde _
           & "_Rev. " & Revision & ".xlsm"
       
       'Speichern-Unter-Dialog öffnen, falls Datei neu angelegt werden muss bzw. verändert wurde
        If ThisWorkbook.Name <> Dateiname Then
            If SaveAsUI = True Then
                If Me.Path = "" Then 'xlmt-Datei wurde via Datei-->Neu als neue Datei angelegt
                    Cancel = True
                    Application.EnableEvents = False
                    Select Case Val(Left(Application.Version, 2))
                        'Excel 97 bis Excel 2003
                        Case Is < 12
                            With Application.Dialogs(xlDialogSaveAs)
                                If .Show(Dateiname, 52) = False Then GoTo Weiter_1
                            End With
                            With ThisWorkbook
                                .Save
                            End With
                        Case Else
                    Application.Dialogs(xlDialogSaveAs).Show (Dateiname), 52
                End Select
    Weiter_1:
                Application.EnableEvents = True
            End If
        Else
            Cancel = True
            Application.EnableEvents = False
            Select Case Val(Left(Application.Version, 2))
                Case Is < 12 'Excel 97 bis Excel 2003
                    With Application.Dialogs(xlDialogSaveAs)
                    If .Show(Dateiname, 52) = False Then GoTo Weiter_2
                        With ThisWorkbook
                        .Save
                        End With
                    End With
                Case Else
               Application.Dialogs(xlDialogSaveAs).Show (Dateiname), 52
           End Select
    Weiter_2:
           Application.EnableEvents = True
         End If
       End If
     End Sub



      

    Betrifft: Gelöst von: Ben
    Geschrieben am: 30.07.2012 14:31:37

    Hallo zusammen,

    hab das Problem in den Griff bekommen. Die Zeile sieht jetzt wie folgt aus:
    If .Show(Dateiname, 52, "") = False Then GoTo Weiter_1

    Danke für die Hilfe!

    Gruß, Ben


    Beiträge aus den Excel-Beispielen zum Thema "Excel stürzt nach SaveAs-Dialog ab"