Page 1 of 1

oExcel:ActiveWorkbook:PrintOut()

Posted: Mon Jul 24, 2017 8:53 pm
by edufloriv
Saludos amigos,

Estoy tratando de enviar una hoja de excel a la impresora virtual PDFCreator que tengo instalada. He hecho la prueba de forma manual y funciona, pero no logro cambiar la impresora por defecto a "PDFCreator" desde código.

En la página de Microsoft la sintaxys de PrintOut figura así: https://msdn.microsoft.com/en-us/vba/ex ... thod-excel

Estoy tratando con este código:

Code: Select all

oExcel:ActiveWorkbook:PrintOut(.F.,.F.,.F.,.F.,"PDFCreator")
También así:

Code: Select all

oExcel:ActiveWorkbook:PrintOut(,,,,"PDFCreator")
Pero me lanza error:
printout.jpg
printout.jpg (89.18 KiB) Viewed 2355 times
Si lo dejo así:

Code: Select all

oExcel:ActiveWorkbook:PrintOut()
Y cambio manualmente la impresora por defecto funciona. Pero la idea es que el usuario no tenga que cambiar manualmente la impresora por defecto.

Agradezco de antemano su tiempo amigos.


Saludos cordiales,

Re: oExcel:ActiveWorkbook:PrintOut()

Posted: Tue Jul 25, 2017 5:41 am
by bpd2000
Step:
1. set the new printer as default printer and look at the result with macro

Sub Check_Printer()
MsgBox Application.ActivePrinter
End Sub
2. now restore your previous preinter and use printer string you get from check_printer
use following code, in my case I use Foxit virtual printer

Sub PDF_Print()

Option Explicit
Dim STDprinter As String

STDprinter = Application.ActivePrinter
Application.ActivePrinter = "Foxit PhantomPDF Printer on Ne03:"

ActiveSheet.PrintOut
Application.ActivePrinter = STDprinter

End Sub

Re: oExcel:ActiveWorkbook:PrintOut()

Posted: Tue Jul 25, 2017 2:33 pm
by edufloriv
Hi BPD,

Thanks a lot for your answer. I comment I was looking in a Harbour forum and found a SET PRINTER DEFAULT function I didn´t know. Here my new code, it works excelent!!

Code: Select all

   cOldPrinter := GetDefaultPrinter()
   WIN_PRINTERSETDEFAULT( 'PDFCreator' )
   oExcel:ActiveWorkbook:PrintOut()
   WIN_PRINTERSETDEFAULT( cOldPrinter )
At this way you can set the default printer just with his win name.


It share with all my friends.


Best regards

-----------------------------------------------------------------------------------------------------------------------------------------------------

Hola BPD,

Mil gracias por tu respuesta. Te comento que buscando en un foro de Harbour encontré una función para setear la impresora por defecto que no conocía. Mi código para imprimir desde excel quedo así, ¡ funciona perfecto !:

Code: Select all

   cOldPrinter := GetDefaultPrinter()
   WIN_PRINTERSETDEFAULT( 'PDFCreator' )
   oExcel:ActiveWorkbook:PrintOut()
   WIN_PRINTERSETDEFAULT( cOldPrinter )
De esta forma se puede cambiar la impresora por defecto solo con el nombre Windows de la misma.

Lo comparto con todos amigos.

Saludos cordiales a todos.