Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Imprimir PDF

78 views
Skip to first unread message

Cosimo

unread,
Mar 25, 2004, 2:09:10 PM3/25/04
to
Hola a Todos:
Tengo un libro de exel que utilizo para hacer facturas
de exportación. He creado varios macros que me permiten
autimatizar varias tareas, pero tengo problemas con algo.
Tengo una macro que lo que hace es enviar a imprimir dos
hojas y selecciona la impresora "PDF WRITER" que guarda
los documentos como pdf. El tema es que cada vez que
ejucuto la macro tengo que especificar el destino y el
nombre del archivo.
¿Hay posibilidades de que automaticamente lo guarde en un
directorio determinado y que le asigne un nombre
determinado?

Agradezco cualquier ayuda pues es muy importante para mi.


Saludos,


Cosimo

Fernando Arroyo

unread,
Mar 26, 2004, 3:45:58 AM3/26/04
to
El siguiente código seleccionar la impresora "HP LaserJet 4100 PCL 6 en Ne02:", imprime Hoja1 usando dicha impresora, y vuelve a convertir la impresora anterior en activa (si era otra):

Sub Seleccionar_Impresora_E_Imprimir()
Dim strImpresoraAnterior As String

With Application
strImpresoraAnterior = .ActivePrinter 'Almacenar la impresora activa
.ActivePrinter = "HP LaserJet 4100 PCL 6 en Ne02:"
Worksheets("Hoja1").PrintOut
If .ActivePrinter <> strImpresoraAnterior Then .ActivePrinter = strImpresoraAnterior
End With
End Sub


Para adaptar el código a tus necesidades tendrás que averiguar el nombre exacto de la impresora PDF WRITER. Puedes lograrlo seleccionándola (en el cuadro de diálogo de impresión), y ejecutando el siguiente código:

Sub MostrarNombreImpresoraActiva()
MsgBox Application.ActivePrinter
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cosimo" <anon...@discussions.microsoft.com> escribió en el mensaje news:10aa501c4129c$a7225620$a601...@phx.gbl...

Peponcio

unread,
Mar 26, 2004, 9:44:47 AM3/26/04
to
"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> dijo
news:en#AE7wEE...@tk2msftngp13.phx.gbl:

Creo que no has entendido la pregunta, yo tengo el mismo problema y no
tengo solución, se trata de conseguir dar el nombre y la ubicación que
debe de tener un fichero que lo genera una impresora que impreme en el
puerto FILE: (lo mismo que hace el PDF WRITER), yo he pensado en utilizar
la instrucción "SendKeys" pero no termino de ver como hacerlo.

Saludos.

Cosimo

unread,
Mar 26, 2004, 10:21:39 AM3/26/04
to
Estimado Fernando:

Gracias por tu respuesta.
Creo que el problema es como dice Peponcio.
Tengo un código que hace varias tareas y en una parte
selecciona una e imprime cierto rango de celdas.
Luego seleciona otra, que en realidad no es una impresora
sino un complento de Adobe que se instala como si fuera
otra impresora pero al momento de imprimir se abre un
cuadro del tipo save as y al´lí se coloca el destino y el
nombre del archivo y el documento se guarda como .PDF.
El tema es que no sé como determinar ese destino y nombre
del archivo.
Aquí te copio parte del código donde se indica que imprima
en esa impresora. Está hecho con la grabadora de macros y
como verás no aparece nada que indique el destino.


Application.ActivePrinter = "Acrobat PDFWriter en
LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2,
Copies:=1, Preview:=False, _
ActivePrinter:="Acrobat PDFWriter en LPT1:"

Lo que pasa luego de esto es que se abre ese cuadro del
que te hablé y al colocar los datos se guarda la hoja.
Tal vez no haya forma de solucionar el problema, pero me
gustaría conocer tu opinión.

Gracias nuevamente.

Saludos,
Cosimo

>-----Mensaje original-----

>.
>

Fernando Arroyo

unread,
Mar 26, 2004, 10:55:03 AM3/26/04
to
Pienso que el cuadro que se abre después de la instrucción que se encarga de imprimir no está "bajo control" de Excel, por lo que la única forma de controlarlo podría ser enviarle las pulsaciones necesarias para guardar el fichero usando la instrucción SendKeys. Lamentablemente, no me es posible probarlo porque no uso el Adobe, así que poco más puedo decirte.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Cosimo" <anon...@discussions.microsoft.com> escribió en el mensaje news:f6aa01c41346$09336c60$a001...@phx.gbl...

Cosimo

unread,
Mar 26, 2004, 11:05:19 AM3/26/04
to
Gracias Fernando:

¿Podrías darme algún ejemplo del comando SendKeys?
Digamos para una situación de Save as.
Imaginemos que se abre el cuadro de díalogo save as.
¿Cuál sería el código (SendKeys) a crear para que guarde
el documento en C: y con el nombre prueba?
Si me puedes ayudar con esto yo podría probar y luego
informar si funciona o los errores que dá para poder
solucionarlo.

Gracias nuevamente.

Saludos,
Cosimo

>-----Mensaje original-----

>.
>

Fernando Arroyo

unread,
Mar 26, 2004, 11:17:44 AM3/26/04
to
Sólo como ejemplo (porque lo mismo se puede hacer en Excel sin necesidad de SendKeys usando el método GetSaveAsFilename del objeto Application), la instrucción sería:

SendKeys "%auC:\prueba.xls%g"

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cosimo" <anon...@discussions.microsoft.com> escribió en el mensaje news:13f1901c4134c$22c75eb0$a501...@phx.gbl...

Cosimo

unread,
Mar 26, 2004, 2:24:52 PM3/26/04
to
Fernando:

He hecho la prueba pero las teclas no se envían.
Este es un código que hice de prueba para que lo veas y me
indiques dónde tendría que escribir lo que me indicaste
(SendKeys "%auC:\prueba.xls%g") pues yo lo coloco antes de
la última linea pero no pasa nada.
Te comento que si ejecuto solo SendKeys "%auC:\prueba.xls%
g", lo que hace es copiar en la celda activa :\prueba.xls,
pero no coloca la C.
De todos modos cuando se abre la ventana de guardar como,
el comando no parece hacer nada.

Sheets("DOCUMENTOS").Select
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle =
xlNone


Application.ActivePrinter = "Acrobat PDFWriter en
LPT1:"
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2,
Copies:=1, Preview:=False, _
ActivePrinter:="Acrobat PDFWriter en LPT1:"

Range("AX30").Select

Agradezco Cualquier Ayuda

Saludos,
Cosimo

>-----Mensaje original-----

>.
>

Fernando Arroyo

unread,
Mar 27, 2004, 6:10:59 AM3/27/04
to
En tu mensaje anterior decías: "¿Podrías darme algún ejemplo del comando SendKeys? Digamos para una situación de Save as. ¿Cuál sería el código (SendKeys) a crear para que guarde el documento en C: y con el nombre prueba?", y eso es precisamente lo que hace la instrucción que puse en mi mensaje (o al menos es lo que hace en la versión de Excel 2003 para España):

%a -> Alt+a
u-> Guardar como
C:\prueba.xls -> nombre con que se guardará el libro
%g -> Guardar


He pensado que hay un parámetro del método PrintOut que quizás te sirva: PrToFileName

ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Preview:=False, ActivePrinter:="Acrobat PDFWriter en LPT1:", PrToFileName:="C:\ruta\NombreFichero.pdf"

aunque no puedo asegurar que funcione puesto que, repito, jamás he usado el Adobe. Respecto a la instrucción

Application.ActivePrinter = "Acrobat PDFWriter en LPT1:"

pienso que no te hace falta puesto que en el método PrintOut ya estás especificando
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cosimo" <anon...@discussions.microsoft.com> escribió en el mensaje news:1411301c41368$03091570$a501...@phx.gbl...

Peponcio

unread,
Mar 29, 2004, 6:04:21 AM3/29/04
to

Me temo que no es válido ningún método de los dos:
1.- PrToFileName: --> Se genera un fichero con el nombre indicado pero
con 0 bytes y después sigue pidiendo el nombre para el fichero (no
utiliza la informacion entregada).
2.- SendKeys --> En el momento de ejecutar la instruccion .PrintOut la
macro se paraliza hasta terminar de imprimir y en el caso de la impresión
PDF, espera a que se le de el nombre del fichero PDF, y una vez terminado
es cuando sigue con la siguiente instrucción, necesitaríamos mandar la
instrucción .PrintOut de manera asincrona, cosa que creo que no se debe
de poder realizar.
.
.
.
.

"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> dijo
news:ODzp4w#EEHA...@TK2MSFTNGP12.phx.gbl:

0 new messages