En este grupo En todos

Foro de Excel



imprimir archivos desde excel

fasgar
Ingeniero civil universidad politecnic...
Escrito por Fasgar El Fasgariano
el 30/09/2010

Hola a todos, estoy intentando crear una macro para imprimir varios archivos, pdf en este caso, desde mi hoja de excel.

El caso es que tengo varios archivos en la misma carpeta que el archivo excel y lo que estoy intentando es que los mande a imprimir en la impresora predeterminada de windows.

He estado investigando por la net y he encontrado varias soluciones que me pudieran servir pero mis escasos conocimientos no me ayudan mucho (shellexecute, printfile.... ) he revisado los siguientes enlaces:

Http://accessvbafaq.mvps.org/item. Asp? Pagina=78

Http://www.recursosvisualbasic.com. Ar/htm/listado-api/218-imprimir-con-shellexecute. Htm

Y alguno más, pero no solo he sacado este intento de macro que no funciona:

Sub imprdocu()

ruta = ThisWorkbook. Path
nbre = ruta & "" & "1- Resumen cierre de mes. Pdf"
Dim Datos As Object
On Error Resume Next
Set Datos = CreateObject("pdf. Application")
Datos. DisplayAlerts = False
Datos.Documents.Open FileName:=nbre
Datos. Visible = False
Datos.ActiveDocument.PrintOut
Datos. Quit
Set Datos = Nothing
Application. ScreenUpdating = True
End Sub

Os agradecería una ayuda, ya que imprimir todos los documentos intercalados con libros de la hoja excel es una tarea tediosa que llevo tiempo intentando resolver.

Gracias de antemano,

Saludos desde León, España





Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 30/09/2010

Y... ¿Cómo haces actualmente para imprimir esos documentos pdf?

¿De cuántos documentos estamos hablando?

Saludos, Cacho.

Fasgar El Fasgariano
Ingeniero civil universidad politecnic...
Escrito por Fasgar El Fasgariano
el 01/10/2010

Hola Cacho, actualmente lo realizo de modo manual abro cada uno de los archivos y les doy a imprimir.


Normalmente lo que hago es imprimir (utilizo una impresora virtual por defecto para crear otro pdf con todos las hojas) dandole a imprimir en cada documento. Imprimo dos hojas de mi excel y le intercalo varios documentos en pdf y así sucesivamente hasta crear el informe completo.


Lo de imprimir las hojas excel es pan comido pero lo otro.....


He encontrado en un debate algo que me podría ayudar:


Http://grupos.emagister.com/debate/imprimir_documento_combinado_a_excel/6610-228493


En base a lo que indica JOHAN he creado esta otra macro:


Sub Imprimir_Archivo_PDF()
Dim Reader As String, Archivo_PDF As String
Reader = "C:\Archivos de programa\Adobe\Reader 9. 0\Reader\AcroRd32. Exe"
ruta = ThisWorkbook. Path
nbre = ruta & "" & "1- Resumen cierre de mes. Pdf"
Shell Reader & " /p /h " & nbre
Application. SendKeys "%{f4}", False
End Sub


Esta macro si que me imprime el archivo en la impresora por defecto pero...... Me cierra excel como si hubiera ocurrido un error ¡¡¡¡Y sólo me funciona una vez, cada vez que enciendo el ordenador.


ESTO ES RARÍSIMO


Un saludo.


Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 01/10/2010

Si te estoy entendiendo adecuadamente, podrías:

a) Abrir el Explorador de Windows
b) Seleccionar los archivos pdf
c) Dar clic derecho a lo seleccionado y luego clic en la opción "Imprimir"

De ese modo, mandarías a imprimir todos los documentos de una sola acción.
¿Te sirve la idea...?

Saludos, Cacho.

Fasgar El Fasgariano
Ingeniero civil universidad politecnic...
Escrito por Fasgar El Fasgariano
el 01/10/2010

Hola Cacho, en realidad no me sirve xq lo que hago es un informe en pdf, el cual esta compuesto por dos hojas del archivo excel A dos informes en pdf de un programa específico de contabilidad, otras dos hojas del libro A otro informe de otro progama en pdf, otra hoja del libro A , una hoja del libro B, otro informe de otro programa en pdf, unos planos en pdf....


Como ves tengo que intercalar hojas de un libro excel con informes en pdf en la impresora virtual (pdfcreator) para que al juntarlas me de como resultado el informe completo y ordenado.


El hecho de imprimir una hoja excel y luego otra hoja excel de otro libro distinto lo tengo controlado, lo que no consigo es imprimir un archivo pdf desde excel. Osea que no consigo hacer una macro que habra el archivo pdf, lo mande a imprimir, y luego cierre el archivo pdf.


La ubicación del archivo lo tengo solucionado con estas líneas de comandos:

ruta = ThisWorkbook. Path
nbre = ruta & "" & "1- Resumen cierre de mes. Pdf"

ya que el nombre del archivo pdf nunca va a variar y siempre lo voy a guardar en la misma carpeta que el excel de partida. El problema viene con todo lo demás.


Saludos, Fasgar



Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 01/10/2010

Hola! Fasgar
Estuve mirando el código que has publicado y veo que es la última línea la que te cierra el Excel.

Te sugiero, entonces, que reemplaces las dos últimas:

Shell Reader & " /p /h " & nbre
Application. SendKeys "%{f4}", False

por las siguientes:

RetVal = Shell(Reader & " /p /h " & nbre)
Shell "TaskKill /f /pid " & RetVal

Comenta tus impresiones, por favor.
Saludos, Cacho.

Fasgar El Fasgariano
Ingeniero civil universidad politecnic...
Escrito por Fasgar El Fasgariano
el 04/10/2010

Hola Cacho, ante todo muchisimas gracias .


Tus cambios en el código han dado resultado, ahora imprime el archivo pdf y no me cierra excel. He observado que a la hora de imprimir varios archivos pdf seguidos necesito poner un contador o un tiempo de espera ya que si no los desordena dependiendo del peso de cada archivo. Con lo que al final el código queda de la siguiente manera (Lo pongo completo por si le sirve de ayuda a alguien)


Sub Imprimir_Archivo_PDF()
Dim Reader As String, Archivo_PDF As String
Reader = "C:\Archivos de programa\Adobe\Reader 9. 0\Reader\AcroRd32. Exe"
ruta = ThisWorkbook. Path
nbre = ruta & "" & "nombre del archivo. Pdf"
RetVal = Shell(Reader & " /p /h " & nbre)
Shell "TaskKill /f /pid " & RetVal

Application. Wait Now + TimeValue("00:00:02")

End Sub


Por si a alguien le interesa el tema, he encontrado una página en la que se resuelve este tema pero de otra manera más elaborada (personalmente prefiero esta al ser menos liosa en el momento de implementarla en otro código más largo). Pongo el enlace:


Http://puremis. Net/excel/code/083. Shtml


Gracias por todo Cacho, con esto doy por cerrado el debate.


Saludos desde León, España

Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 04/10/2010

¡Me alegra que lo hayas solucionado..! Y gracias por el aporte.

Hasta la próxima, Cacho.