Excel stürzt nach SaveAs-Dialog ab
Ben
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