Hallo zusammen,
aktuell verzweifle ich an folgendem Problem.
Der Rechner:
Windows 10
Excel 2016
Erst mal zur Erklärung der Funktionsweise des Templates, um die Struktur zu verdeutlichen:
Ich habe eine .xltm Datei, die durch eine Datenbank gestartet wird. Beim Starten des Templates, werden in ein Tabellenblatt Informationen der Datenbank übertragen. Das Template enthält (wie der Name schon sagt) Makros, die nach dem Start des Templates ausgeführt werden können.
Die Hauptfunktion besteht aus folgenden Schritten:
- Anhand der Informationen aus der Datenbank, werden Files aus dem Filesystem in speziellen Ordnern gefunden, angezogen und in das Template als neue Tabellenblätter abgespeichert
- Mit den Informationen aus den neu entstandenen Tabellenblättern, werden Berechnungen durchgeführt. Die Ergebnisse werden in ein abschließendes Tabellenblatt kopiert. Es existiert ein verstecktes Tabellenblatt, das für den Export der berechneten Werte vorbereitet ist. Dieses wird kopiert, um die Werte einzufügen. Das originale Tabellenblatt wird wieder verborgen. In dem Export-Tabellenblatt befindet sich ein Button, über den das entstandene Dokument in einen definierten Ordner abgespeichert werden kann.
- Hier kommen wir zum eigentlichen Problem: Über den Klick auf den "Speichern"-Button, wird das Dokument als ".xlsm" Datei in dem Verzeichnis abgelegt und die Datei wird geschlossen. Aus irgendeinem Grund !!!ist nun die entstandene Datei fehlerhaft!!!
Mein Code zum Speichern (Die If-Bedingung ist für die Ermöglichung des zweiten Speichervorgangs eingebracht --> Überschreiben statt umbenennen und neu speichern):
Sub Speichern()
'...Variablendeklaration
Application.DisplayAlerts = False
Application.ScreenUpdating = False
NameBisherMitEndung = ThisWorkbook.Name
NameBisherOhneEndung = Left(NameBisherMitEndung, Len(NameBisherMitEndung) - 5) 'Aktuell nicht verwendet
'...Definition von Maschinennummer und Teilversuch (Strings)
NeuerName = Maschinennummer & Teilversuch & NameBisherMitEndung
ChDir Pfad 'Im Vorfeld definierter Pfad
ThisWorkbook.Worksheets("Process").Visible = xlVeryHidden 'Tabellenblatt zum Starten des Makros ausblenden
If Left(NameBisherMitEndung, 6) = Left(NameBisherMitEndung, 6) Then 'Prüfen, ob Datei bereits existiert
ThisWorkbook.SaveAs fileName:=Pfad & "\" & NameBisherMitEndung , _'Wenn ja, mit bisherigem Namen erneut speichern
FileFormat:=52, CreateBackup:=False
Else
ThisWorkbook.SaveAs fileName:=Pfad & "\" & NeuerName, _ 'Wenn nein, mit neuem Namen speichern
FileFormat:=52, CreateBackup:=False
End If
'Hinweis: Die folgenden Zeilen werden nicht mehr ausgeführt. Im Debugger verschwindet hier das aktive Workbook.
Application.DisplayAlerts = True
Application.ScreenUpdating = True
ThisWorkbook.Close
End Sub
- Seltsam ist: Durch das erneute Öffnen der Datei mit Excel, kann die Datei von Excel repariert und über ein und den selben Button ein zweites Mal abgespeichert werden. Anschließend ist die Datei nicht mehr fehlerhaft. Ich würde mir in Zukunft gerne den Schritt des 2. Abspeicherns ersparen und direkt eine Datei erhalten, die nicht fehlerhaft ist.
Hat jemand eine Idee, an was es liegen könnte? Gehen an irgendeiner Stelle Informationen verloren? Hat es irgendetwas mit der Tatsache zu tun, dass ich mit einer .xltm Datei arbeite, die als .xlsm Datei gespeichert wird?
Ich freue mich sehr über Hilfe.
Viele Grüße
Jess
|