6.4k Aufrufe
Gefragt in Tabellenkalkulation von sdisno Einsteiger_in (43 Punkte)
Hallo!

Folgendes Problem tritt auf:

Ich möchte in meinem Excel-Makro die Arbeitsmappe speichern mit dem Befehl
ActiveWorkbook.SaveAs filename:=fname
wobei fname die Variable ist, die den Dateinamen enthält. Es erscheint daraufhin der "Speichern unter"-Dialog, und das Feld Dateineme ist mit dem Dateinamen vorausgefüllt. Klickt man nun auf speichern, funktioniert alles normal, die Mappe wird gespeichert. Klickt man aber auf Abbrechen, wird der Vorgang nicht abgebrochen, sondern die Mappe unter Falsch.xls gespeichert.
Wie kann man das unterbinden bzw. wo liegt die Ursache für dieses Problem?


Danke

7 Antworten

0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Sdisno...
nur allein mit der Zeile:
ActiveWorkbook.SaveAs filename:=fname

öffnet sich bei mir kein speichern unter Dialog!

Der muß vorher aufgerufen werden.
Dort erhält fname auch seinen Inhalt.
Wenn in dem Dialog auf abbrechen geklickt wird ist fname demzufolge leer.
Und unter einer leeren Pfadangabe kann man nicht speichern.
So könnte eine Lösung aussehen:
If fname <> "" Then
ActiveWorkbook.SaveAs Filename:=fname
Else
MsgBox "Vorgang abgebrochen!"
End If


Hoffe es hilft Dir weiter...

Gruß
Kauz
0 Punkte
Beantwortet von sdisno Einsteiger_in (43 Punkte)
Hallo Kauz!

Vielen Dank für die Antwort!

vorher gebe ich fname einen Wert mit der Zeile
fname = Application.GetSaveAsFilename("dateiname.xls")

danach folgt dann die Funktion

ActiveWorkbook.SaveAs filename:=fname


Vielleicht hat die Variable fname nach Abbruch nicht den Wert "" sondern "Falsch.xls"

Ich werde als folgendes probieren:

fname = Application.GetSaveAsFilename("dateiname.xls")
if fname <> "" And fname <> "Falsch.xls" then
ActiveWorkbook.SaveAs filename:=fname
Else
MsgBox "Vorgang abgebrochen"


Ich kann das aber erst morgen probieren, zuhauis hab ich kieb Ecxel.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

statt ein and ,sollte ein or zu sehen sein

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

erklärung

es war mir nicht möglich eine variable zu fuellen und gleichzeitig leer zu halten :-)))

gruss nighty
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Hallo Sdisno,

Du darfst nicht auf "Falsch.xls" abfragen, sondern auf das Schlüsselwort "False". Wenn Du bei dem Speichern unter-Dialog auf Abbrechen drückst, erhälst Du als Rückgabewert das Schlüsselwort "False", daher danach abfragen. Dein Makro müsste dann also wie folgt lauten:

fname = Application.GetSaveAsFilename("dateiname.xls")
If fname <> "" And fname <> False Then
ActiveWorkbook.SaveAs Filename:=fname
Else
MsgBox "Vorgang abgebrochen"
End If

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von sdisno Einsteiger_in (43 Punkte)
Hi!

So hats funktioniert::



fname = Application.GetSaveAsFilename("dateiname.xls")
If fname <> "" And fname <> "Falsch" Then
ActiveWorkbook.SaveAs Filename:=fname
Else
MsgBox "Vorgang abgebrochen"
End If


Das Schlüsselwort ist tatsächlich "Falsch", wahrscheinlich, weil die Excel-Version, mit der ich arbeite auf deutsch eingestellt ist. Jedenfalls habe ich nach

fname = Application.GetSaveAsFilename("dateiname.xls")

fname abgefragt mittels

Msgbox fname

und habe nach Betätigen des Abbruch-Knopfes im Speichern unter-Dialog den Wert "Falsch" bekommen.

Beste Grüße und Danke an alle fleißigen Antworschreiber
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Sdisno...
na prima, wenn es jetzt funktioniert!

Danke schön für Deine Rückmeldung.

Grüße Kauz
...