Clever-Excel-Forum

Normale Version: Drucken verhindern ABER pdf erstellen erlauben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7
Tipp: "With ActiveSheet"
# pdfName:
- "xxx\____2016_02_19-15_15_16.pdf"
- Laufzeitfehler "Die Methode "ExportAsFixedFormat" für das Objekt "_Workbook" ist fehlgeschlagen
- Laufzeitfehler in der Zeile "ActiveWorkbook.ExportAsFixedFormat Filename:=pdfName, Type:=xlTypePDF"
- Obwohl ich speichern drücke durchläuft er "Private Sub Workbook_BeforePrint(Cancel As Boolean)" und erst im Anschluss zeigt er den Laufzeitfehler. Das er dies durchläuft hängt wahrscheinlich mit dem automatischen erstellen der pdf in "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)" zusammen.
# "With ActiveSheet"
- mit oder ohne, es ändert sich nichts am Ablauf/Fehlern


Tipp: "einer der angegebenen Zellen ein Zeichen steht, das nicht für einen Dateinamen geeignet ist"
- wenn ich "Private Sub Workbook_BeforePrint(Cancel As Boolean)" ganz raus nehme/deaktiviere denn läuft das Programm ohne ein Problem und die Welt ist wunderbar. Ich kann mit "Speichern unter" eine pdf erzeugen und gleichzeitig erzeugt VBA meine Backup pdf. ... alles GEIL!



Tipp: "öffentliche boolesche Variable außerhalb der Prozedur"
- "Speichern unter", VBA wird geöffnet und eine Meldung "es fehlt END IF" erscheint, nach Bestätigung und Beenden des Makros wird eine pdf erzeugt und denn kommt die Fehlermeldung ein zweites mal, nach Bestätigen und Beende wird die zweite pdf erzeugt.
- Leider lässt sich aber auch eine Datei Drucken.


Also, ich hoffe ich habe keinen Tipp übersehen und alle probiert.
Vielleicht hat ja noch wer eine Idee??
Werde versuchen Fragen zeitnah zu beantworten und Tipps schnell zu probieren und das Ergebnis hier mitteilen.


Danke.


Ziel ist es:
- aus der Excel darf nicht gedruckt werden
- es muss beim Speichern eine Backup pdf erzeugt werden, Name ist variabel und Pfad fix, beides im Makro hinterlegt.
- Ideal wäre es wenn man NUR pdfs speichern kann und keine Excel oder..., klar wenn man eine Bedingung erfüllt (zB in der Zelle A1 steht ein "x" denn lässt sich dies auch als Excel,... abspeichern. Sonst hätte man glaube ich arge Probleme.
Währe aber schon 110% zufrieden wenn die ersten beiden Punkte klappe.

Christian19
Hallo,

zum "xxx" im pdfName und den Zeichen hatte ich schon geantwortet:

In einem Dateinamen haben gewisse Zeichen nichts zu suchen, dazu gehört der Backslash, denn der ist ja ein Pfadtrenner.

oder

Ein komplette Laufwerks- und Pfadangabe beginnt nicht mit "xxx"

xxx\... geht also nicht.

Eventuell klappt \xxx\____ ...usw, wenn Du im aktuellen Laufwerk in der ersten Ebene ein Verzeichnis xxx hast, also z.B. c:\xxx
Sicherer wäre dann aber auch die Laufwerksangabe vor dem xxx.
, Hallo,


wenn Du meinen Tipp getestet hast, dann musst Du auch zeigen, wie der Code bei Dir aussieht.

Es müsste ein Fehler im BeforePrint sein.
Hallo Atilla,

ich bleibe dabei und sehe mich in den falschen Zeichen bestätigt Wink
Hallo André,

Ich halte dagegen.Wenn er mein Beispiel richtig einsetzt wird es funktionieren.

Wenn ich falsch liege, schreibe ich in alle Zellen von drei Tabellenblättern: ich habe unrecht und werde Andre nie wieder widersprechen.
(19.02.2016, 16:31)schauan schrieb: [ -> ]Hallo,

zum "xxx" im pdfName und den Zeichen hatte ich schon geantwortet:

In einem Dateinamen haben gewisse Zeichen nichts zu suchen, dazu gehört der Backslash, denn der ist ja ein Pfadtrenner.

oder

Ein komplette Laufwerks- und Pfadangabe beginnt nicht mit "xxx"

xxx\... geht also nicht.

Eventuell klappt \xxx\____ ...usw, wenn Du im aktuellen Laufwerk in der ersten Ebene ein Verzeichnis xxx hast, also z.B. c:\xxx
Sicherer wäre dann aber auch die Laufwerksangabe vor dem xxx.


Das "xxx" steht für den ganzen Pfad, diesen wollte hier nicht preis geben.
"y:\1x\2xx\3xx\"
Hallo Christian,

tja, mit der Info hätt ich anders diskutiert Sad
(19.02.2016, 16:40)atilla schrieb: [ -> ], Hallo,


wenn Du meinen Tipp getestet hast, dann musst Du auch zeigen, wie der Code bei Dir aussieht.

Es müsste ein Fehler im BeforePrint sein.

Option Explicit
Dim boVar As Boolean
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("a1").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
boVar = True

' Druckbereich festlegen
    ActiveSheet.PageSetup.PrintArea = "$B$1:$AE$97"

'Archiv-pdf erstellen
Dim pdfName As String
pdfName = "y:\1x\2xx\3xx\" & Range("K8") & "_" & Range("K6") & "_" & Range("K9") & "_" & Range("K13") & "_" & Format(Now, "YYYY_MM_DD-hh_mm_ss") & ".pdf"
    ActiveWorkbook.ExportAsFixedFormat Filename:=pdfName, Type:=xlTypePDF
boVar = False
End Sub


Private Sub Workbook_BeforePrint(Cancel As Boolean)
' Verhindert das Drucken
If boVar = False Then
  Cancel = True
  MsgBox "Drucken aus der Excel wurde verhindert." _
      & vbCr & "" _
      & vbCr & "Drucken nur als .pdf möglich." _
      & vbCr & "" _
      & vbCr & "Datei bitte als .pdf im Projekteordner abspeichern.", 48
  End If
End Sub


Beim Versuch zu Drucken kommt die Meldung aus "BeforePrint" ... also alles super
Beim Versuch zu Speichern kommt eine Fehlermeldung mit dem Hinweis auf die Zeile "ActiveWorkbook.ExportAsFixedFormat Filename:=pdfName, Type:=xlTypePDF"
(19.02.2016, 16:58)schauan schrieb: [ -> ]Hallo Christian,

tja, mit der Info hätt ich anders diskutiert Sad

okay, anstatt xxx hätte ich vielleicht auch gleich mir einen Pfad ausdenken können, mein Fehler, dachte nicht das dies als Fehler gesehen wird sondern als Ersatz für den eigentlichen Pfad.
Habe gelernt, werde mich in Zukunft bemühen ;)
Hallo,

Bin jetzt unterwegs und kann den Code nicht testen.
Einen Fehler erkenne ich jetzt nicht.

Aber vielleicht kann André als Wiedergutmachung für seine Widerborstigkeit mir Gegenüber, erst einmal weiterhelfen.  Smile
Seiten: 1 2 3 4 5 6 7