HERBERS Excel-Forum - das Archiv
Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
Stefan
Hallo zusammen,

Ich habe folgenden Code um eine Excel Datei in einem bestimmten Pfad abzulegen... Allgemein soll der Code dafür sorgen, dass die Excel Datei gespeichert wird, nachdem ein Zielverzeichnis vorausgewählt wird und der Name der Datei in einer Zelle ermittelt wird.


Es funktioniert auch soweit fast alles. Sobald ich das Excel(mit Makros) einmal gespeichert habe, werde ich beim erneuten Speichern gefragt ob ich überschreiben möchte... Falls ich überschreibe ist alles gut, falls ich dann auf Nein klicke - kommt eine Fehlermeldung (Laufzeitfehler 1004... Die Methode SaveAS Für das Objekt Workbook ist fehlgeschlagen.)
Was fehlt mir denn an diesem Code noch?

Sub speichern_unter()

Dim Pfad$, Datei$, Filter$, Endg$, File
Pfad = "Z:\Allgemein\.....\.......\"
Datei = ActiveSheet.Range("H11")
If Datei = "" Then
MsgBox "Zelle einhält keinen Eintrag"
Exit Sub
End If
Endg = ".xlsm"
If InStr(Datei, Endg) = 0 Then
Datei = Datei & Endg
End If
Filter = "Excel Files (*" & Endg & "), *" & Endg
File = Application.GetSaveAsFilename(Pfad & Datei, Filter)

If File <> False Then ActiveWorkbook.SaveAs Filename:=File
'Hier hakt es irgendwie :-)

End Sub


Ich bedanke mich schon mal für die Hilfe

VG Stefan


AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
ralf_b
willst du dieselbe Datei unter einem anderem Namen speichern oder eine Kopie der Datei irgendwohin speichern?

wenn du auf Nein klickst, hat die Variable File bereits den Pfad und ist <> False also wird versucht die Datei nochmal auf sich selbst zu speichern. Das geht aber schief.
Das False bekommt man nur in File wenn man der Dateiauswahldialog abbricht.

 If File <> False Then

If File <> ActiveWorkbook.FullName Then
ActiveWorkbook.SaveAs Filename:=File
End If
End If

AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
Daniel
Hi

Ersetze mal alles nach dem letzten End If durch:


Application.Dialogs(xldialogsaveas).show

Die korrekte Schreibweise bitte selbst über die Inellisense ermitteln (erste Buchstaben tippen und dann STRG+Leertaste).

Gruß Daniel

AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
Stefan
Leider gibt es bis jetzt noch keine zufriedenstellende Lösung.

Gruß
Stefan
AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
daniel
Hi

du kannst auch bei Application.Dialogs Pfad, Dateiname, Dateityp usw vorbelegen.
man muss diese Werte dann als Parameter mit übergeben. Allerdings ist es nicht so ganz einfach herauszufinden, wo die jeweiligen Parameter stehten müssen.

soweit bin ich schon:

Application.Dialogs(xldialogsaveas).show Dateiname, Dateityp

wo jetzt der Filter steht, müsstet du ausprobieren, ist vermutlich das dritte.

wenn du im Code wissen musst, ob gespeichert oder abgebrochen wurde, musst du die Anweisung als Funktion verwenden.
sie gibt WAHR oder FALSCH zurück, je nachdem ob gespeichert oder abgebrochen wurde:

CheckSpeichern = Application.Dialogs(xldialogsaveas).show(Dateiname, Dateityp)
if CheckSpeichern then
Msgbox "Gespeichert"
else
Msgbox "Abbruch"
end if

Gruß Daniel
AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
Stefan
Hi,

habe ich getestet, das mit dem Speichern und abbrechen funktioniert - aber leider hebelt das anscheinend die Funktion aus, das der Name des Dokuments, der in einer Zeller der Datei generiert wird nicht übernommen wird und zudem wird auch das Verzeichnis wo das ganze gespeichert wird nicht mehr vorbelegt.

Gruß
Stefan
AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
Stefan
Hallo Ralf,

eigentlich will ich die datei nicht überschreiben, bzw. nur nach Rückfrage. Es soll quasi die Standardabfrage kommen... "Die Datei ist bereits vorhanden... Möchten Sie die Datei überschreiben...." Wenn ja, dann überschreiben, wenn Nein dann Abbruch ohne Speichern.

Achso dann verstehe ich den Hintergrund nun auch. Ich habe deinen Code mal eingebaut... jetzt passiert folgendes: Wenn die Datei das erste mal gespeichert wird, dann funktioniert es. Wenn ich die Datei unter dem gleichen Namen speichern möchte, fragt er nicht mehr nach ob man die Datei überschreiben möchte und schließt den Speichervorgang. -> speichert aber nicht...

VBA kann ich so gut wie gar nicht, daher bitte nicht böse sein über meine komischen Fragen.

VG
Stefan
AW: Fehlermeldung bei Code - Excel speichern mit Bez. aus Zelle
ralf_b
 If File <> False Then

If File <> ActiveWorkbook.FullName Then
ActiveWorkbook.SaveAs Filename:=File
else
ActiveWorkbook.Save
End If
End If