Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PDF Druck Mysterium

Forumthread: PDF Druck Mysterium

PDF Druck Mysterium
09.11.2018 21:06:17
Josef
Hallo zusammen,
mit Hilfe dieses Forums und dem Makrorekorder habe ich schon sehr viele Varianten der VBA-PDF-Druckfunktion probiert um automatisiert Rechnungen auf dem Server abzulegen:
'Dateinamen generieren
Dim strZiel As String
Dim Speichername As String
Dim Rechnungsnummer As String
Dim Auftragsnummer As String
Dim Kunde As String
Dim Kommission As String
strZiel = PFAD
Rechnungsnummer = Worksheets("Rechnung").Cells(14, 5).Value
Auftragsnummer = Worksheets("Auftrag").Cells(5, 5).Value
Kunde = Worksheets("Auftrag").Cells(7, 2).Value
Kommission = Worksheets("Auftrag").Cells(12, 2).Value
Speichername = strZiel & Rechnungsnummer & "-" & Auftragsnummer & " " & Kunde & " " &  _
Kommission & ".pdf"
'als PDF Drucken und ablegen
Sheets("Rechnung").Activate
ActiveWorkbook.SaveAs Filename:= _
Speichername, FileFormat:=xlPDF, _
PublishOption:=xlSheet

Leider immer wieder mit dem gleichen Fehlerbild was ich mir nicht erklären kann. Das Programm funktioniert so lange gut, bis eine reale Seite auf unserem HP Drucker ausgedruckt wird. Danach meldet das Skript immer wieder einen Laufzeitfehler 1004. Das Skript läuft auf einem Mac mit entsprechendem Microsoft Office für MAC (und ich hoffe das ist nicht die Ursache). Auf dem Mac gibt es scheinbar den Befehl Application.PrintCommunication = True / False nicht.
Hat Jemand eine Idee um dieses Problem zu lösen. Diese eine Programmzeile mit dem PDF Print bringt mich noch zum Wahnsinn
Besten Dank schon mal im Voraus.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF Druck Mysterium
10.11.2018 03:32:13
fcs
Hallo Josef,
Die Zeile
Application.PrintCommunication = True / False
taucht in deinem Code ja nicht auf.
Meines wissen taucht diese Anweisung auf, wenn man mit dem Makro-rekorder Änderungen um Seiten-layout (PageSetUP) aufzeichnet - jedenfalls auf einem Windows-System.
Diese Zeilen kannst du im Code gefahrlos alle löschen.
Die Ausführung des Codes dauert dann angeblich etwas länger, wenn der Wert nicht zeitweise auf False gesetzt wird.
Gruß
Franz
Anzeige
AW: PDF Druck Mysterium
10.11.2018 09:54:48
Josef
Die Option Application.PrintCommunication hatte ich natürlich entfernt, da diese auf dem Mac-Systemen nicht existiert. Die Aufzeichnung von Änderungen am Seitenlayout liefern folgendes Ergebnis:
Sub Makro2()
' Makro2 Makro
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(1)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = -4
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Sub

Der gewünschte Code ist leider nicht dabei... handelt es sich hier evtl. um einen echten Excel-Bug?
Anzeige
AW: PDF Druck Mysterium
10.11.2018 10:01:23
Josef
Hallo Franz,
erst mal besten Dank für Deine Unterstützung. War zu Fixiert auf den Code und möchte nicht unhöflich sein.
Gruß,
Josef
AW: PDF Druck Mysterium
10.11.2018 20:25:36
fcs
Hallo Josef,
auf einem Windows-Excel sieht die VBA-Anweisung zum Speichern eines Tabellenblatts als PDF komplett anders aus.
   'als PDF Drucken und ablegen
Sheets("Rechnung").Activate
'       ActiveWorkbook.SaveAs Filename:= _
Speichername, FileFormat:=xlPDF, _
PublishOption:=xlSheet ' auf Mac von Josef
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Speichername, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True 'Windows 7/ Excel 2013 / Office Professional Plus 2013

ich weiss nicht, welche Informationen des Page-Setup (von denen sind ein paar abhängig vom Drucker bzw. dessen Möglichkeiten) und der Druckereinstellung beim Speichern als PDF verarbeitet werden und so den Fehler verursachen könnten.
Wenn das Problem nur unmittelbar nach dem Drucken auf dem Problemdrucker auftritt, dann ist es wohl eher ein Problem der Resourcenverwaltung auf dem MAC bzw. des Druckertreibers.
Tritt das Problem nur nach dem Drucken auf dem Problem-Drucker auf? oder auch bei anderen Druckern?
Probiere mal zu Beginn des Makros auf einen anderen Drucker zu wechseln und am Ende wieder auf den aktiven Drucker (Problemdrucker).
Die Anweisungen für den Drucker-Namen musst du ggf. an den MAC anpassen.
Die Debug-Anweisungen sind nur zum Testen und anzeigen der Druckernamen im Direkt-Fenster des VBA-Editors. Diese kannst du löschen/auskommentieren, wenn es funktioniert.
LG
Franz
Sub Test()
'Dateinamen generieren
Dim strZiel As String
Dim Speichername As String
Dim Rechnungsnummer As String
Dim Auftragsnummer As String
Dim Kunde As String
Dim Kommission As String
Dim strActivePrinter As String
Debug.Print "Vorher: " & Application.ActivePrinter
strActivePrinter = Application.ActivePrinter
Application.ActivePrinter = "PDF24 PDF auf Ne00:"
Debug.Print "Während: " & Application.ActivePrinter
strZiel = PFAD
Rechnungsnummer = Worksheets("Rechnung").Cells(14, 5).Value
Auftragsnummer = Worksheets("Auftrag").Cells(5, 5).Value
Kunde = Worksheets("Auftrag").Cells(7, 2).Value
Kommission = Worksheets("Auftrag").Cells(12, 2).Value
Speichername = strZiel & Rechnungsnummer & "-" & Auftragsnummer & " " & Kunde & " " & _
Kommission & ".pdf"
'als PDF Drucken und ablegen
Sheets("Rechnung").Activate
ActiveWorkbook.SaveAs Filename:= _
Speichername, FileFormat:=xlPDF, _
PublishOption:=xlSheet ' auf Mac von Josef
Application.ActivePrinter = strActivePrinter
Debug.Print "Nachher: " & Application.ActivePrinter
End Sub

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige