Und damit auch ihr und andere damit arbeiten können, da isser:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Tabelle2").Select
Const SeiteVon = 1
Const SeiteBis = 1
Const Kopien = 1
Application.Dialogs(xlDialogPrint).Show arg1:=2, arg2:=SeiteVon, arg3:=SeiteBis, arg4:=Kopien
Dim sbPath As String
sbPath = Worksheets(2).Range("F8") & " - " & Worksheets(2).Range("B8") & " - " & Worksheets(2). _
Range("D8")
sbPath = "C:\My Folder\Repair Orders\Repair order files\" & sbPath
ActiveSheet.Copy
If Dir(sbPath, vbNormal) "" Then Kill sbPath
Dim zelle As Range
For Each zelle In Worksheets(1).UsedRange
If Left(zelle.Formula, 1) = "=" And InStr(zelle.Formula, "[") > 1 Then
zelle.Value = zelle.Value
End If
Next zelle
ActiveWorkbook.SaveAs Filename:=sbPath, FileFormat:=xlNormal
ActiveWorkbook.Close
End Sub
Funktioniert wie folgt:
Tabelle1 : Mein Blanko, hier kommt z.B. die vorgefertigte Rechnung rein
Tabelle2 : Hier ist die 1 zu 1 Kopie von Tabelle1 ( muß von Hand an Tabelle1 angpasst werden wie z.B Spaltenbreite, Zellenfarbe, Muster etc. alle Zellen verknüpfen und co.) ist halt ein bischen Arbeit, dann aber mit dem gewünschten Effekt.
Button Fertigstellen bewirkt : 1 zu 1 Kopie von Tabelle2, öffnet Druckerauswahl, Legt die Kopie in benannten Ordner ( muß im Code angepasst werden) ab, Name der Datei setzt sich aus Zelle F8 B8 D8 zusammen ( kann im Code angepasst werden), anschließend wird wenn schon unter gleichen Namen vorhanden die Datei in der Ablage überschrieben und alle Verknüpfungen der alten und jetzt neuen Tabelle2 gelöscht.
Der Clou : Die Tabelle1 und 2 aus der Original Arbeitsmappe, also Mein Blanko und die Kopie bleiben
unberührt und man kann Rechnungen schreiben ablegen rechnungen schreiben ablegen usw.
Und nicht vergessen die Rechnungsnummer z.B. in Zelle F8 immer zu verändern, sonst überschreibt ihr diese Datei.
Habs tausendmal getestet und es funzt und funzt und funzt.
So viele gute Taten
und freundliche füsse
Tom