Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

msofiledialogsaveas speichert nicht

msofiledialogsaveas speichert nicht
13.08.2014 19:32:12
Matthias
Hallo Gemeinde,
ersteinmal vielen Dank an die Beiträge, die mich bei meinen bisherigen Problemen sehr gut unterstützt haben.
Meine Problem wurde schon ähnlich hier im Forum behandelt: https://www.herber.de/forum/archiv/1228to1232/1228284_xltmDatei_nach_oeffnen_als_xlsm_abspeichern.html.
Solange ich den Boardeigenen "Speichern", "Speichern unter" Button, die Tastenkürzel "Strg + S" oder "F12" verwende funktioniert alles wunderbar. Ich lasse per Makro die Ribbon-Leiste ausblenden, daher steht dem Benutzer kein "Speichern" Button, oder Dateimenü zur Verfügung.
Ich möchte das Speichern auch per Makro lösen und habe daher in einem Modul ein Sub angelegt.

Sub Speichern_neu()
With ThisWorkbook
.save
End Sub

Das Makro im ActiveWorkbook sieht äquivalent zu oben im Link beschriebenen aus.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'  MsgBox "Datei-Format: " & Me.FileFormat   ' Testzeile
Dim iFilterIndex As Integer
If Me.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
Application.EnableEvents = False
Cancel = True
If Val(Left(Application.Version, 2)) >= 12 Then 'Excel-Versionsprüfung
'Excelversion 2007 und neuer
Select Case Me.FileFormat
Case 52             'xlOpenXMLWorkbookMacroEnabled - Excel 2007 mit Makros
iFilterIndex = 2  'Standardmäßig xlsm  unter Excel 2007
Case 56             'xlExcel8  - Excel 98 bis 2003
iFilterIndex = 4  'Standardmäßig xls  unter Excel 2007
Case Else
iFilterIndex = 1  'Standardmäßig xlsx  unter Excel 2007
End Select
'Speichern unter Dialog anzeigen
With Application.FileDialog(2)  '2 = msoFileDialogSaveAs
.InitialView = 2              '2 = msoFileDialogViewDetails
.FilterIndex = iFilterIndex
If .Show  False Then
.Execute
End If
End With
Else
'Ältere Excelversionnen - SaveAs Dialog anzeigen
Application.Dialogs(5).Show     '5 = xlDialogSaveAs
End If
Application.EnableEvents = True
End If
End Sub

Es erscheint keine Fehlermeldung, aber es wird keine Datei angelegt! Ich finde leider den Fehler nicht und bitte daher um Ihre Mithilfe.
Vielen Dank schon im Voraus
Gruß Matthias

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: msofiledialogsaveas speichert nicht
14.08.2014 10:27:00
fcs
Hallo Mathias,
wie du festgestellt hast funktioniert das Workbook_BeforeSave in dem Link nur wenn die von Excel zur Verfügung gestellten Schaltflächen und Menüs für Speichern bzw Speichern_Unter benutzt werden.
Wird der Speichern-Befehl von einem anderen Makro ausgeführt, dann kommt es an irgendeiner Stelle im Makro-Ablauf zu einer Fehlfunktion, die aber keine Fehlermeldung generiert. Scheinbar verheddert sich Excel irgendwo in dem Gestrüpp aus Ereignismakros und Dialog_anzeigen abbrechen und dann doch wieder anzeigen.
Ausweg: Integriere alle erforderlichen Speicherfunktionen und Dialoganzeigen in dein Makro "Speichern_neu".
In dem Before_Save-Ereignismakro wird dann nur noch der SaveAs-Dialog blockiert und eine Meldung angezeigt.
Gruß
Franz
'Speichern-Makro in einem allgemeinen Modul
Sub Speichern_neu()
'  MsgBox "Datei-Format: " & Me.FileFormat   ' Testzeile
Dim iFilterIndex As Integer
If ActiveWorkbook.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
Application.EnableEvents = False
If Val(Left(Application.Version, 2)) >= 12 Then 'Excel-Versionsprüfung
'Excelversion 2007 und neuer
Select Case ActiveWorkbook.FileFormat
Case 52             'xlOpenXMLWorkbookMacroEnabled - Excel 2007 mit Makros
iFilterIndex = 2  'Standardmäßig xlsm  unter Excel 2007
Case 56             'xlExcel8  - Excel 98 bis 2003
iFilterIndex = 4  'Standardmäßig xls  unter Excel 2007
Case Else
iFilterIndex = 1  'Standardmäßig xlsx  unter Excel 2007
End Select
'Speichern unter Dialog anzeigen
With Application.FileDialog(2)  '2 = msoFileDialogSaveAs
.InitialView = 2              '2 = msoFileDialogViewDetails
.FilterIndex = iFilterIndex
If .Show  False Then
.Execute
End If
End With
Else
'Ältere Excelversionnen - SaveAs Dialog anzeigen
Application.Dialogs(5).Show     '5 = xlDialogSaveAs
End If
Application.EnableEvents = True
Else
ActiveWorkbook.Save
End If
End Sub

'Makro unter "DieseArbeitsmappe"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim iFilterIndex As Integer
If SaveAsUI = True Then 'Prüfen, ob SaveAsDialog angezeigt wird
Cancel = True
MsgBox "Zum Speichern einer neuen Datei bitte nur die zur Verfügung " _
& "gestellten Schaltflächen/Makros nutzen!", vbInformation + vbOKOnly, "Speichern unter"
End If
End Sub

Anzeige
AW: msofiledialogsaveas speichert nicht
14.08.2014 11:14:07
Matthias
Hallo Franz,
vielen Dank für deine schnelle Hilfe. Ist das Verhalten bei anderen exceleigenen Ereignissen äquivalent, oder auf das Speichern begrenzt?
Gruß Matthias

AW: Workbook Ereignismakros - Probleme
14.08.2014 12:48:14
fcs
Hallo Mathias,
ich habe keine Übersicht von problematischen Anweisungen im Zusamenhang mit den Ereignismakros.
Meines Wissens ist es aber z.B. keine gute Idee, innerhalb des BeforePrint-Ereignismakros Druckdialoge anzuzeigen oder Druckjobs abzuschicken.
Bei den meisten anderen Ereignissen funktioniert das vorübergehende Deaktivieren der Ereignismakros reibungslos.
Gruß
Franz

35 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige