FileFormat:=56 (xlExcel8) erzwingen
20.09.2016 13:07:43
Zacharias
nachdem Ihr mir schon vor Jahren immer wieder bei kniffligen Problemen geholfen habt,
würde ich mich über den ein oder anderen Tipp auch heute wieder freuen.
Ich habe eine Excel-Datei die als Formular dient und zigfach in ein firmeninternes Dokumentenmanagmentsystem eingelesen werden muß.
Excel-Version der Firma ist 2010. Das Doku-System kann aber nur Excel-Dokumente bis Version 2003 verarbeiten. Wunsch des ist nun, zu verhindern, daß die besagten Formulardateien in einem anderen Format als 2003 gespeichert werden.
Mein Hinweis, daß dies vermutlich nur mittels VBA ginge, was allerdings aktivierte Makros voraussetzt und nicht das Speichern bei deaktiven Makros verhindert, wurde zur Kenntnis genommen, aber die VBA-Lösung soll umgesetzt werden.
Die Lösung sollte sowohl unter 2003, als auch unter 2010 lauffähig sein.
Hier mein erster Versuch:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varWorkbookName
If SaveAsUI Then
varWorkbookName = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Name, _
fileFilter:="Excel 97-2003-Workbook (*.xls), *.xls")
If Not varWorkbookName = False Then
If Val(Application.Version)
Das funktioniert auch soweit.Dummerweise erscheint der "SpeichernUnter"-Dialog auf diese Weise zweimal.
Zuerst mein GetSaveAsFilename-Dialog, nach Abfangen des Speicherwunsches und Korrektur auf erlaubtes FileFormat, und danach der eigentliche vom User über "Speichern Unter" gestartete Dialog, bei dem dann auch nichts mehr eingeschränkt ist.
Nun die Frage: Gibt es evtl. eine Möglichkeit den ursprünglich vom User gestarteten Dialog zu schließen, bzw. zu verhindern, daß dieser überhaupt gezeigt wird?
Oder evtl. eine andere Möglichkeit, auf die ich nicht gekommen bin ?
Auch das Setzen eines DefaultFormates brachte mich nicht weiter, da es die Auswahl anderer Formate nicht verhindert. Aber vielleicht gibt ja eine Möglichkeit ein DefaultFormat zu erzwingen?
If Val(Application.Version) Application.DefaultSaveFormat = xlNormal
Else
Application.DefaultSaveFormat = 56
End If
Vielen Dank vorab an Euch alle und insbesondere an Herber dessen Forum seit Jahren erste Anlaufstelle für mich ist!
Viele Grüße
Zacharias