10.06.2022, 15:32
Zum Thema Drucken bin ich ein wenig weiter als vorher. Das Menü muss ich gar nicht ändern.
Ich hab in der Arbeitsmappe folgendes Hinterlegt.
Damit Decke ich die Prüfung ab, welche die Vollständigkeit Checkt.
Anschließenden öffnet sich der Speichern unter Dialog. Damit mache ich mir ein Problem auf, dass ich bei der Nutzung des Makros, welches hinter dem implementierten Button steckt, bereits eliminiert hatte.
Das Makro vergibt einen Dateinamen der sich, je nachdem wie der Antrag ausgefüllt wurde, anders aufbaut. Am Ende also so, wie die Datei auch endgültig abgelegt wird. Die Datei jedes mal selbst umbenennen nervt irgendwann. Es schaffen auch nur 5% der Nutzer die nötige Aufmerksamkeit aufzubringen, um zu erkennen wie die Datei benannt ist, nachdem Sie diese von allen signiert zurück bekommen. Erziehungsversuche schlagen meistens fehl.
Also habe ich das automatisiert.
Beim oberen Code wird halt nur die Prüfung durchgeführt. Ist alles in Ordnung, startet die Standardprozedur zur Wandlung in eine PDF Datei. Wie ich dort noch weitere Themen die den Druckvorgang betreffend implementieren kann, das weiß ich leider nicht.
Der Code hinter dem Button sieht wie folgt aus.
Ich hab in der Arbeitsmappe folgendes Hinterlegt.
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range("D8") = "" And Range("D10") = "" And Range("D12") = "" And Range("D14") = "" Then
Cancel = True
MsgBox "Bitte den Zeitraum ankreuzen und ein Datum, einen Monat oder einen speziellen Zeitraum eintragen."
Else
If Range("D8") <> "" And Range("G8") = "" Then
Cancel = True
MsgBox "Bitte das Datum für den gwünschten Samstag eintragen (DD.MM.YYY)."
Else
If Range("D10") <> "" And Range("G10") = "" Then
Cancel = True
MsgBox "Bitte den gewünschten Monat auswählen."
Else
If Range("D12") <> "" And Range("G12") = "" Then
Cancel = True
MsgBox "Bitte den gewünschten Zeitraum eintragen (DD.MM.YYYY - DD.MM.YYYY)."
Else
If Range("D12") <> "" And Range("I12") = "" Then
Cancel = True
MsgBox "Bitte den gewünschten Zeitraum eintragen (DD.MM.YYYY - DD.MM.YYYY)."
Else
If Range("D14") <> "" And Range("G14") = "" Then
Cancel = True
MsgBox "Bitte den gewünschten Zeitraum eintragen (DD.MM.YYYY - DD.MM.YYYY)."
Else
If Range("D14") <> "" And Range("I14") = "" Then
Cancel = True
MsgBox "Bitte den gewünschten Zeitraum eintragen (DD.MM.YYYY - DD.MM.YYYY)."
Else
If Range("D17") = "" And Range("D19") = "" And Range("D21") = "" Then
Cancel = True
MsgBox "Bitte die betroffene Schicht auswählen."
Else
If Range("P8") = "" Then
Cancel = True
MsgBox "Bitte den Namen des Antragstellers eintragen."
Else
If Range("P10") = "" Then
Cancel = True
MsgBox "Bitte im Feld Abteilung die Vollständige Org.-ID eintragen."
Else
If Range("P12") = "" Then
Cancel = True
MsgBox "Bitte die Telefonnummer des Antragstellers eintragen."
Else
If Range("P14") = "" Then
Cancel = True
MsgBox "Bitte die E-Mail des Antragstellers eintragen."
Else
If Range("B26") = "" Then
Cancel = True
MsgBox "Grundlose Mehrarbeit... Ernsthaft?"
Else
If Sheets("Tabelle2").Range("D1").Value < 50 Then
Cancel = True
MsgBox "Die Begründung bitte ausführlicher beschreiben, beispielsweise mit Hilfe von Auftrags- oder Projektnamen sowie gefährdete Termine bzw. bereits verstrichene Termine. Wir sind in Ihrem Tagesgeschäft nicht eingebunden und benötigen daher ein wenig mehr Informationen als beispielsweise ""Rückstand abbauen"". Vielen Dank!"
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub
Damit Decke ich die Prüfung ab, welche die Vollständigkeit Checkt.
Anschließenden öffnet sich der Speichern unter Dialog. Damit mache ich mir ein Problem auf, dass ich bei der Nutzung des Makros, welches hinter dem implementierten Button steckt, bereits eliminiert hatte.
Das Makro vergibt einen Dateinamen der sich, je nachdem wie der Antrag ausgefüllt wurde, anders aufbaut. Am Ende also so, wie die Datei auch endgültig abgelegt wird. Die Datei jedes mal selbst umbenennen nervt irgendwann. Es schaffen auch nur 5% der Nutzer die nötige Aufmerksamkeit aufzubringen, um zu erkennen wie die Datei benannt ist, nachdem Sie diese von allen signiert zurück bekommen. Erziehungsversuche schlagen meistens fehl.
Also habe ich das automatisiert.
Beim oberen Code wird halt nur die Prüfung durchgeführt. Ist alles in Ordnung, startet die Standardprozedur zur Wandlung in eine PDF Datei. Wie ich dort noch weitere Themen die den Druckvorgang betreffend implementieren kann, das weiß ich leider nicht.
Der Code hinter dem Button sieht wie folgt aus.
Code:
Private Sub DoPDF()
Dim sName$
Dim Path$
sName = ActiveSheet.Name
Path = CreateObject("WScript.Shell").specialfolders("Desktop")
On Error Resume Next
If Range("D10") = "X" Then
ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Path & "\" & Sheets("Tabelle1").Range("g10") & " - " & Cells.Range("P10") & ".pdf", _
OpenAfterPublish:=True
If Err.Number > 0 Then MsgBox "Error saving pdf."
Else
If Range("D12") = "X" Then
ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Path & "\" & Sheets("Tabelle1").Range("g12") & " - " & Sheets("Tabelle1").Range("I12") & " - " & Cells.Range("P10") & ".pdf", _
OpenAfterPublish:=True
If Err.Number > 0 Then MsgBox "Error saving pdf."
Else
If Range("D14") = "X" Then
ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Path & "\" & Sheets("Tabelle1").Range("g14") & " - " & Sheets("Tabelle1").Range("I14") & " - " & Cells.Range("P10") & ".pdf", _
OpenAfterPublish:=True
If Err.Number > 0 Then MsgBox "Error saving pdf."
Else
ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Path & "\" & "KW" & Sheets("Tabelle2").Range("c1") & " - " & Cells.Range("P10") & ".pdf", _
OpenAfterPublish:=True
If Err.Number > 0 Then MsgBox "Error saving pdf."
End If
End If
End If
End Sub