oExcel:ActiveWorkbook:PrintOut()

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 237
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

oExcel:ActiveWorkbook:PrintOut()

Post 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 2241 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,

Eduardo Flores Rivas


LIMA - PERU
User avatar
bpd2000
Posts: 1207
Joined: Sat Sep 10, 2011 4:07 am
Location: India

Re: oExcel:ActiveWorkbook:PrintOut()

Post 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
BPD
Convert Dream into Reality through HMG
User avatar
edufloriv
Posts: 237
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Re: oExcel:ActiveWorkbook:PrintOut()

Post 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.

Eduardo Flores Rivas


LIMA - PERU
Post Reply