1.8k Aufrufe
Gefragt in Tabellenkalkulation von acerider Einsteiger_in (59 Punkte)
Gerne möchte ich ein einzelnes Tabellenblatt in Excel 2010 als PDF drucken (Achtung: NICHT als PDF speichern, das dann erzeugte PDF kann nicht weiterverarbeitet werden - unabhängig, ob " IncludeDocProperties" auf True oder False steht).

Aufzeichnen über ein Mako hat bei mir leider auch nicht zum Erfolg geführt. Den Drucker (DocuPrinter) bekomme ich angesteuert

" Sheets("PDF").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, _
ActivePrinter:="Docuprinter", Collate:=True"

Jedoch schaffe ich es nicht, diese PDF dann unter dem Pfad "U:\" zu speichern.

Folgendes Makro hat auch nicht weitergeholfen, hier werden alle Tabellenblätter als PDF gedruckt - ich möchte in meinen Beispiel nur das Blatt "Tabelle1" als PDF drucken.

' Makro3 Makro
'


Dim docToConvert: docToConvert = "U:\Name.xlsx"

Dim DPSDK: Set DPSDK = CreateObject("docuPrinter.SDK")
DPSDK.BackupSettings

DPSDK.DocumentOutputFormat = "PDF"
DPSDK.DocumentOutputName = "test"
DPSDK.DocumentOutputFolder = "u:\"

DPSDK.HideSaveAsWindow = True
DPSDK.DefaultAction = 1

DPSDK.ApplySettings

Dim MSExcel: Set MSExcel = CreateObject("Excel.Application")
MSExcel.DisplayAlerts = False

Dim XLDoc: Set XLDoc = MSExcel.Workbooks.Open(docToConvert, 0, True)

XLDoc.Activate
XLDoc.PrintOut , , , False, "docuPrinter"
XLDoc.Saved = True
XLDoc.Close
MSExcel.Quit
Set MSExcel = Nothing

Dim RVal: RVal = DPSDK.Create ' Create output document

DPSDK.RestoreSettings
Set DPSDK = Nothing

If (RVal <> 0) Then
MsgBox "Error while converting the document!!!"
Else
MsgBox "Done converting!!!"
End If

End Sub

9 Antworten

0 Punkte
Beantwortet von flupo Profi (17.9k Punkte)
Das Problem liegt wahrscheinlich daran, dass der Docuprinter intern
anders heißt. Meist folgt nach dem eigentlichen Namen noch "auf..."
Das kannst du ganz einfach mit dem folgenden Makro herausfinden:
Sub Makro1()
MsgBox "The name of the active printer is " & _
Application.ActivePrinter
End Sub

Wechsle vor dem Start den Drucker im Menü auf den Docuprinter.

Gruß Flupo
0 Punkte
Beantwortet von acerider Einsteiger_in (59 Punkte)
Hallo Flupo,

vielen Dank für Deinen Lösungsansatz. Den Drucker bekomme ich (intern) angesteuert (docuPrinter auf NE03:), aber ich kann die PDF leider nicht in meinen gewünschten Pfad speichern bzw. muss dies manuell vorgeben!

Vielen Dank noch mal & viele Grüße

AceRider
0 Punkte
Beantwortet von flupo Profi (17.9k Punkte)
Der Speicherpfad gehört m.E. nicht zu den von Excel steuerbaren
Parametern. Du kannst nur im Druckertreiber bzw. dessen
Einstellungen gucken, ob es da vielleicht eine Möglichkeit gibt, was fest
einzustellen.

Gruß Flupo
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

funktioniert denn dein gepostetes Makro? Hast du mal nachgeschaut, ob ein entsprechender Verweis auf den PDF-Drucker in Excel gesetzt ist (VBA-Fenster - Extras - Verweise; Haken bei docuPrinter setzen).

Gruß

M.O.
0 Punkte
Beantwortet von acerider Einsteiger_in (59 Punkte)
Hallo M.O.,

das von mir gepostete Makro funktioniert. Ich habe den Haken (vorher nicht gesetzt) jetzt gesetzt, ändert aber nichts.

Viele Grüße

AceRider
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

da ich den dokuPrinter nicht habe, kann ich leider keine Tests damit machen.

Aber ersetze mal in dem von dir geposteten Makro die Zeile
Dim XLDoc: Set XLDoc = MSExcel.Workbooks.Open(docToConvert, 0, True)

durch
Dim XLDoc: Set XLDoc = MSExcel.ActiveWorkbook.ActiveSheet(docToConvert, 0, True)


Damit sollte dann (hoffentlich) das aktuell geöffnete Tabellenblatt als PDF ausgedruckt werden.

Gruß

M.O.
0 Punkte
Beantwortet von acerider Einsteiger_in (59 Punkte)
Hallo,

es kommt die Fehlermeldung "Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt."

Gruß

AceRider
0 Punkte
Beantwortet von
Hallo,

auch ich habe den Docu-Printer nicht. Aber hast du mal versucht in dem großen
Makro die Zeile XLDoc.PrintOut , , , False, "docuPrinter"
durch XLDoc.Sheets("PDF").PrintOut , , , False, "docuPrinter"
oder XLDoc.Sheets("PDF").PrintOut 1, 1, , False, "docuPrinter" zu ersetzen? (die
beiden 1 stehen für Seite 1 bis 1)

Was ich nicht verstehe ist, wieso du bei dem einen Makro Probleme mit dem Zugriff
auf U: hast und mit dem Anderen nicht. Evlt. hilft dir ja der Befehl ChDrive "U:\" zum
wechseln des Laufwerks weiter.

Mr. K.
0 Punkte
Beantwortet von
Ach so klar. weil die Printout-Methode kein Argument für den Zielpfad hat. Braucht
sie ja bei einem normalen Drucker auch nicht. Aber über dein Makro sollte es
klappen.
...