Hallo Franz,
du hast mich mit deinem Vorschlag ja richtig unternehmungslustig gemacht :-)
Also:
Mit dem ersten Button "Ausschreibung einrichten" wird ein Formular sowie eine Mutterdatei zur Aufnahme von Rückläufern erstellt. Dabei werden
ProjName und
TPName eingegeben und im Anschluß daran das Formular eingerichtet. Das Ganze wird dann unter einem Namen mit dem Bestandteil
Kalk gespeichert - eine Datei, die mit der Formulareinrichtung so hingebogen wird, daß sie 17 verschiedene Formular-Rückläufer verrechnen kann (daher Kalk). Die Speicherung erzwingt den Dateinamen und verwendet dabei die Inputs.
Mit dem zweiten Button "versandfertig machen" werden aus dieser
Kalk heraus überflüssige Blätter abgetrennt und das Ganze versandfertig gemacht - nur noch das Ausschreibungs-Formular und zwei verborgene Blätter sind übrig. Dies wird dann unter einem Namen mit dem Bestandteil
Ausschr gespeichert - wie oben unter Verwendung der Inputs.
die Sequenz
With ActiveWorkbook
.Names.Add Name:="Ausschreibung.Projekt", RefersTo:="=""" & ProjName & """"
.Names.Add Name:="Ausschreibung.TP", RefersTo:="=""" & TPName & """"
End With
hab ich in den ersten Durchgang
"Ausschreibung einrichten" eingebaut - das klappt auch prima, wenn später das entstandene Ausschr-Formular geöffnet wird: Die Inputs sind noch vorhanden.
Nun hatte ich mich schon immer geärgert, daß nur beide Vorgänge hintereinander ausgeführt werden können. Das wird in der Praxis auch so gemacht, aber eine mögliche Fehlbedienung könnte sein, die entstandene
Kalk-Datei versehentlich zu schließen, bevor die
Ausschr entstanden ist. Dabei gehen die Inputs
ProjName und
TPName (trotz Speicherung) verloren, und wenn ich die
Kalk wieder öffne, ist sie wertlos, weil zum Zusammenbasteln des
Ausschr-Dateinamens die Inputs fehlen - jetzt hab ich übrigens auch erstmals begriffen, warum das so ist :-))
Nun hatte ich die o.g. Sequenz versuchsweise auch in das BeforeClose gesetzt. Erfolg: Ich hatte beim Wieder-Öffnen einer testhalber geschlossenen
Kalk tatsächlich die Inputs gerettet.
Nun aber meckert der Code
"versandfertig machen", weil es die Namen, die er hinzufügen soll, schon gibt. Da ich nicht wußte, wie ich ein If Not Name is Nothing oder so formulieren sollte, hab ich mal dies probiert:
On Error GoTo überspringen
With ActiveWorkbook
.Names.Add Name:="Ausschreibung.Projekt", RefersTo:="=""" & ProjName & """"
.Names.Add Name:="Ausschreibung.TP", RefersTo:="=""" & TPName & """"
End With
überspringen:
...usw.
Das ging dann zwar, ergab aber Müll.
Wie müßte ich es denn schreiben, wenn ich dieses Input-Retten sowohl beim "versandfertig machen" als auch beim BeforeClose unterbringen möchte?
Grüße - Jörg