Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Drucken verhindern ABER pdf erstellen erlauben
#11
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
Antworten Top
#12
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
, 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.
Gruß Atilla
Antworten Top
#14
Hallo Atilla,

ich bleibe dabei und sehe mich in den falschen Zeichen bestätigt Wink
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
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.
Gruß Atilla
Antworten Top
#16
(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\"
Antworten Top
#17
Hallo Christian,

tja, mit der Info hätt ich anders diskutiert Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
(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"
Antworten Top
#19
(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 ;)
Antworten Top
#20
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
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste