Anzeige
Archiv - Navigation
1628to1632
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
Fehler im GetSaveAsFilename-Dialog
25.06.2018 11:28:06
earlycon
Hallo zusammen,
ich bräuchte mal eure Unterstützung.
Ich habe im BeforeSave-Event zuerst verschiedene Anfragen (Berechtigung zum speichern ?, schon gespeichert ?, etc.). Das Event wird dann gecancelt und es folgt
strInitalName = (hier Pfadangabe und Dateiname)
strFileName = Application.GetSaveAsFilename(strInitialName, _
' "Excel Arbeitsmappe (*.xlsx),*.xlsx," & _
' "Excel Arbeitsmappe mit Makros (*.xlsm),*.xlsx," & _
' "Excel 97-2003 Arbeitsmappe (*.xls),*.xls", 2, "Speichern unter")'
ThisWorkbook.SaveAs strFileName
Allerdings schaffe ich es nicht, dass die Datei unter der Pfad- und Dateiangabe in strInitialName gespeichert wird. Es wird immer nur die Originaldatei unter dem originalen Dateinamen gespeichert.
Was mache ich falsch ?
Kann mir bitte jemand helfen ?
Besten Dank und viele Grüße
Stefan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 11:31:47
EtoPHG

AW: Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 11:45:48
earlycon
Cancel = True
Ich dachte das wäre richtig, weil ja danach das ThisWorkbook.SaveAs... kommt.
Gruß
Stefan
AW: Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 13:12:07
NonFootie
Hallo,
Nach dem Einlesen via GetSaveAsFilename(...
    If strFileName  CStr(False) Then
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=strFileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
End If

AW: Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 13:12:08
NonFootie
Hallo,
Nach dem Einlesen via GetSaveAsFilename(...
    If strFileName  CStr(False) Then
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=strFileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
End If

Anzeige
AW: Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 15:28:34
earlycon
Hallo und vielen Dank für Deine Rückmeldung.
Ich kann das leider erst morgen testen.
Was ich zwischenzeitlich noch herausbekommen habe:
- wenn ich über mein Speichern-Makro (ruft Thisworkbook.Save auf) speichern möchte,
wird der neue Dateiname ignoriert und es wird nur die Datei gespeichert
- Klicke ich auf das Diskettensymbol, funktioniert der Code, die Speicherplatzabfrage kommt
und die Datei wird unter dem neuen Namen gespeichert.
Mir ist leider nicht klar, wo der Unterschied der Speichermethoden liegt.
Aber ich teste morgen zuerst mal Deinen Code.
Viele Grüße
Stefan
Anzeige
AW: Beschreibe genau: Event wird dann gecancelt (owT)
25.06.2018 17:49:12
Daniel
Hi
eigentlich müssten beide Methoden das BeforeSave-Event aufrufen.
Setze mal einen Haltepunkt an den anfang des BeforeSave-makros (klick auf den breiten Rahmen an der linken seite des Codefensters oder füge den Befehl Stop ein.
das Makro stoppt dann an dieser stelle und du erkennst, ob es überhaupt ausgeführt wird.
was mir so spontan einfallen würde, vielleicht hast du in deinem Speichermakro ja den Befehl Application.EnableEvents = False gesetzt, und dieser verhindert das ausführen der Eventmakros.
Gruß Daniel
AW: Beschreibe genau: Event wird dann gecancelt (owT)
26.06.2018 08:19:12
earlycon
Guten Morgen Daniel,
Danke für Deine Rückmeldung.
Ja, das BeforeSave-Events läuft sauber durch. Nur bei ThisWorkbook.SaveAs Filename:=strFileName speichert Excel die Datei nicht unter dem neuen Namen, sondern führt einfach nur ein normales Save der Datei durch.
Ich habe den Code in der Antwort von NonFootie gepostet.
Vielleicht fällt Dir da ja was auf, wenn Du mal drauschauen magst...
Gruß Stefan
Anzeige
AW: Beschreibe genau: Event wird dann gecancelt (owT)
26.06.2018 07:28:12
earlycon
Guten Morgen zusammen,
zuerst einmal vielen Dank für Eure Hilfe.
Leider bin ich bisher nicht weiter gekommen. Die Datei wird nach wie vor zwar gespeichert, aber eben nicht unter dem unter GetSaveAs vergebenen Dateinamen. Wenn ich auf das Diskettensymbol klicke, funktioniert der Code und die Datei wird unter dem neuen Namen gespeichert. Ich poste nachfolgend mal den Code dafür, vielleicht fällt Euch im Zusammenhang noch ein Fehler auf. Ich verstehe es einfach nicht.
Besten Dank und viele Grüße
Stefan
Sub Speichern() ' (Dieses Sub wird über einen Button gestartet und ruft die BeforeSave auf)
ThisWorkbook.Save
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strFileName As String, strInitialName As String
On Error GoTo Errorhandler
Cancel = True
strFileName = Application.GetSaveAsFilename(strInitialName, _
"Excel Arbeitsmappe (*.xlsx),*.xlsx," & _
"Excel Arbeitsmappe mit Makros (*.xlsm),*.xlsx," & _
"Excel 97-2003 Arbeitsmappe (*.xls),*.xls", 2, "Speichern unter") '
If strFileName = "Falsch" Then  ' Abbrechen gedrückt
Sheets("Formular").Shapes("Speichern").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(92,  _
195, 55)
Sheets("Formular").Shapes("Gespeichert").Visible = False
Sheets("Formular").Shapes("Normal_speichern").Visible = False
Cancel = True: Application.EnableEvents = True
Exit Sub
Else
Sheets("Formular").Shapes("Gespeichert").Visible = True
Sheets("Formular").Shapes("Normal_speichern").Visible = True
Sheets("Formular").Shapes("Speichern").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255,  _
204, 0)
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=strFileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
Application.EnableEvents = True
Exit Sub
Errorhandler:
Cancel = True
Sheets("Formular").Shapes("Speichern").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255,  _
255, 255) ' Weiß
MsgBox "Es ist ein Fehler aufgetreten !", vbCritical, "Achtung !"
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige