Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Informes : Indicar por código la impresora para un informe
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Hay alguna forma en que pueda, a través de código, indicar la impresora por la cual quiero que se imprima un determinado informe?
Respuesta : Si utilizas Access XP o superior, puedes utilizar la propiedad Printer de un informe, junto con la colección Printers para asignar una impresora a un informe. Por ejemplo
' este código establecerá la impresora Acrobat Distiller
' para el informe "informe1" y después lo imprimirá
On Error Resume Next
DoCmd.OpenReport "informe1", acViewDesign, , , acHidden
Reports("informe1").Printer = Printers("Acrobat Distiller")
DoCmd.Close acReport, "tblAutores", acSaveYes
DoCmd.OpenReport "informe1"
En cambio, si utilizas Access 97 o 2000, no tendrás ninguna ayuda para lograrlo, excepto que utilices la propiedad PrtMip de un informe (lo cual no te recomiendo, por lo complicado que es). Como alternativa, podríamos utilizar una pequeña rutina que haría algo parecido al código que hemos utilizado para Access XP o superior y que, a su vez, utilizaría otra función publicada en esta web llamada SetDefaultPrinter.

Esta pequeña rutina es una "encapsulación" de la instrucción OpenReport del objeto DoCmd. Se la ha de llamar de manera parecida, pero en su último argumento hay que pasarle el nombre de la impresora por la cual se quiera imprimir ese informe. Para que funcione adecuadamente, el informe no debe de tener ninguna impresora asociada.

Un ejemplo de uso:
' este código imprimirá el informe "informe1"
' a través de la impresora "Acrobat Distiller"
OpenReportPrt "informe1", , , , "Acrobat Distiller"
Copia y pega este código en un módulo estandar
'---------------------------------------------------------
'
' OpenReportPrt
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Sub OpenReportPrt(ReportName, _
                  Optional View = acViewNormal, _
                  Optional FilterName, _
                  Optional WhereCondition, _
                  Optional Printer)

Dim DefaultPrt As String

    ' guardamos el valor de la impresora predeterminada
    DefaultPrt = GetDefaultPrinter
    ' hacemos predeterminada la impresora que hemos escogido
    SetDefaultPrinter Nz(Printer)
    ' imprimimos el informe con los parametros pasados a la rutina
    On Error Resume Next
    DoCmd.OpenReport ReportName, View, FilterName, WhereCondition
    ' ponemos como predeterminada la impresora que estaba
    SetDefaultPrinter DefaultPrt

End Sub
'---------------------------------------------------------

Ejemplos:

printersAc97-2000.zip

 

Temas relacionados:

GetDefaultPrinter.

Printers

SetDefaultPrinter

 

Última actualización: 20/2/2005