18.02.2016, 17:37
Hallo zusammen,
Hallo,
ich bin dabei eine .xltm Datei zu erstellen, in der das Drucken verhindert werden muss aber das automatische Erstellen einer .pdf funktionieren muss.
Alle anderen Probleme konnte ich lösen, hier scheitere ich nun aber leider.
Was passiert bei diesem Code?
- Wenn in dem Feld AX110 eine "0" steht wird das Drucken und Speicher erfolgreich verhindert
- Wenn in dem Feld AX110 eine "1" steht wird das Drucken erfolgreich verhindert, beim Speichern kommt allerdings eine Fehlermeldung.
Fehler:
- die MsgBox aus "Private Sub Workbook_BeforePrint(Cancel As Boolean)" wird aufgerufen, was ja auch ganz logisch ist. im Anschluss kommt ein Laufzeitfehler mit dem Verweis auf den Pfad.
Also mir ist klar das diese Meldung kommen muss, da das erstellen der pdf über den Druckertreiber läuft.
Kann man den Code aber so gestallten, dass das Drucken weiterhin verhindert wird ABER das Speicher als Excel und pdf erlaubt?
Danke
Mein bisheriger Code in "Dieser Arbeitsmappe"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Prüfen ob alle notwendigen Felder ausgefüllt sind, erst wenn diese ausgefüllt sind wird die Datei zum Drucken/Speichern freigegeben
If ActiveSheet.Range("AX110").Value = "0" Then
MsgBox " Die Datei wurde nicht vollständig ausgefüllt.:" _
& vbCr & "" _
& vbCr & " Seite 1: Es müssen alle Felder ausgefüllt sein" _
& vbCr & " Seite 2: Wurde ein Feld ausgewählt muss in dieser Zeile auch die Checkliste ausgefüllt werden und umgekehrt." _
& vbCr & "" _
& vbCr & "" _
& vbCr & " Bitte alle Felder ausfüllen." _
& vbCr & "" _
& vbCr & " Ansonsten kann nicht gedruckt werden." _
& vbCr & "" _
& vbCr & " Gruß", 48
Cancel = True
Exit Sub
End If
' Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$B$1:$AE$97"
'Archiv-pdf erstellen
Dim pdfName As String
pdfName = "xxx" & Range("K8") & "_" & Range("K6") & "_" & Range("K9") & "_" & Range("K13") & "_" & Format(Now, "YYYY_MM_DD-hh_mm_ss") & ".pdf"
ActiveWorkbook.ExportAsFixedFormat Filename:=pdfName, Type:=xlTypePDF
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
' Verhindert das Drucken
Cancel = True
MsgBox "Drucken aus der Excel wurdeverhindert." _
& vbCr & "" _
& vbCr & "Drucken nur als .pdf möglich." _
& vbCr & "" _
& vbCr & "Datei bitte als .pdf im Projekteordner abspeichern.", 48
End Sub
Hallo,
ich bin dabei eine .xltm Datei zu erstellen, in der das Drucken verhindert werden muss aber das automatische Erstellen einer .pdf funktionieren muss.
Alle anderen Probleme konnte ich lösen, hier scheitere ich nun aber leider.
Was passiert bei diesem Code?
- Wenn in dem Feld AX110 eine "0" steht wird das Drucken und Speicher erfolgreich verhindert
- Wenn in dem Feld AX110 eine "1" steht wird das Drucken erfolgreich verhindert, beim Speichern kommt allerdings eine Fehlermeldung.
Fehler:
- die MsgBox aus "Private Sub Workbook_BeforePrint(Cancel As Boolean)" wird aufgerufen, was ja auch ganz logisch ist. im Anschluss kommt ein Laufzeitfehler mit dem Verweis auf den Pfad.
Also mir ist klar das diese Meldung kommen muss, da das erstellen der pdf über den Druckertreiber läuft.
Kann man den Code aber so gestallten, dass das Drucken weiterhin verhindert wird ABER das Speicher als Excel und pdf erlaubt?
Danke
Mein bisheriger Code in "Dieser Arbeitsmappe"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Prüfen ob alle notwendigen Felder ausgefüllt sind, erst wenn diese ausgefüllt sind wird die Datei zum Drucken/Speichern freigegeben
If ActiveSheet.Range("AX110").Value = "0" Then
MsgBox " Die Datei wurde nicht vollständig ausgefüllt.:" _
& vbCr & "" _
& vbCr & " Seite 1: Es müssen alle Felder ausgefüllt sein" _
& vbCr & " Seite 2: Wurde ein Feld ausgewählt muss in dieser Zeile auch die Checkliste ausgefüllt werden und umgekehrt." _
& vbCr & "" _
& vbCr & "" _
& vbCr & " Bitte alle Felder ausfüllen." _
& vbCr & "" _
& vbCr & " Ansonsten kann nicht gedruckt werden." _
& vbCr & "" _
& vbCr & " Gruß", 48
Cancel = True
Exit Sub
End If
' Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$B$1:$AE$97"
'Archiv-pdf erstellen
Dim pdfName As String
pdfName = "xxx" & Range("K8") & "_" & Range("K6") & "_" & Range("K9") & "_" & Range("K13") & "_" & Format(Now, "YYYY_MM_DD-hh_mm_ss") & ".pdf"
ActiveWorkbook.ExportAsFixedFormat Filename:=pdfName, Type:=xlTypePDF
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
' Verhindert das Drucken
Cancel = True
MsgBox "Drucken aus der Excel wurdeverhindert." _
& vbCr & "" _
& vbCr & "Drucken nur als .pdf möglich." _
& vbCr & "" _
& vbCr & "Datei bitte als .pdf im Projekteordner abspeichern.", 48
End Sub