Clever-Excel-Forum

Normale Version: SaveAs BeforeClose Probleme
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute

Ich habe hier zwei Probleme.
1. Ich habe eine ".xltm" Datei mit 2 Arbeitsblättern("Formel1" & "Formel2"). Diese soll nach dem ausfüllen, wenn sie geschlossen wird, automatisch eine neue ".xlsm" Datei speichern mit dem Bezug auf Zelle "DatName". Allerdings sollte eine Pfadabfrage statt finden, da ich jetzt noch nicht weiß wo es hingespeichert werden soll.
Bisher habe ich diese zwei Codes gefunden:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If

End Sub

und
Code:
Application.Dialogs(xlDialogSaveAs).Show (Sheets(1).Range("A1").Value)

Aber irgendwie bekomm ich die nicht zusammen ans laufen.  Wie müsste der Code denn fertig aussehen?


Und mein zweites Problem:
Die Blätter "Formel1" und "Formel2" sind ziehmlich ähnlich.  Jetzt möchte ich das wenn z.B. bei Formel1 in
-B8 etwas eingegeben ist, das dieser Wert in Formel2 C8 angezeigt wird.
-C8 in Formel2 D8
...
usw.

Soweit so einfach. Das würde ich schon erreichen wenn ich die beiden Blätter mit einander verknüpfe.
Ich hätte allerdings gern das ich in Formel2 etwas in C8 eingeben kann das dann auch in Formel1 in B2 angezeigt wird (Es gibt halt kein Hauptblatt mit dem gearbeitet wird. Es kommt darauf an wer damit arbeitet. Daraus ergibt sich wer mit welchem Blatt arbeitet)

Ist sowas überhaupt möglich? Oder ist dieser "Zirkelbezug unumgänglich"?



Ich hoffe das war jetzt halbwegs verständlich xD

Gruß Dominic
Hallo Dominic,

zur Frage 1:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 If ThisWorkbook.Saved = False Then
   Application.Dialogs(xlDialogSaveAs).Show Sheets(1).Range("A1").Value
 End If
End Sub
Gruß Uwe
Hallo Uwe

Danke für deine Mühe. Habs aber jetzt doch anders gemacht. Denke das es über einen CommandButton doch besser gelöst ist.
Hier der Code falls es jemanden Interessiert:

Code:
Private Sub CommandButton1_Click()
Dim fName As Variant
fName = Application.GetSaveAsFilename(InitialFileName:=[DatName2], FileFilter:="Excel Files (*.XLSM), *.XLSM", Title:="Save As")
If fName = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=fName
End Sub
Entschuldigung für den Doppelpost. Aber ich habe gerade noch einen Fehler entdeckt.

Es funktioniert eigentlich alles. Allerdings können die VB Projekte nicht mit gespeichert werden -.-
Ich denke es liegt an "FileFilter:="Excel Files (*.XLSM), *.XLSM", Title:="Save As")"

Was müsste da stehen damit Excel eine Makrofähige Datei erstellt?
Hallo,

versuchs mal so

Code:
Private Sub CommandButton1_Click()
Dim fName As Variant
fName = Application.GetSaveAsFilename(InitialFileName:=[DatName2], FileFilter:="Excel Files (*.XLSM), *.XLSM", Title:="Save As")
If fName = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=fName, FileFormat:=50
End Sub
Hallo Stefan

Da kommt dann leider die Meldung:

Laufzeitfehler '1004'

Diese Erweiterung kann nicht mit dem ausgewählten Dateityp verwendet werden. Ändern Sie die Dateierweiterung im Textfeld 'Dateiname' oder wählen Sie einen anderen Dateityp aus, indem Sie die Auswahl unter 'Speichern unter' ändern.

Hab aber ein bisschen rumprobiert. Es muss  FileFormat:=52 heißen.  Jetzt gehts =) Vielen Dank