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
Miscelánea : Printers
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Cómo puedo obtener por código las impresoras que estén instaladas en el sistema?
Respuesta : Si utilizas Access XP o superior, puedes utilizar la colección Printers, que viene incorporada a partir de esa versión.

Un ejemplo de uso:
Dim i As Long

    For i = 0 To Printers.Count - 1
        Debug.Print Printers(i).DeviceName
    Next
Si, en cambio, utilizas Access 97 o 2000 no tendrás ninguna herramienta dentro de la aplicación que te ayude, así que tendrías que hacer una función personalizada para ello. He escrito una función que devuelve una colección con los nombres de las impresoras instaladas en el sistema y cuyo uso sería similar al ejemplo expuesto más arriba. Podrías utilizar exactamente el mismo ejemplo o este otro, ambos serían válidos
Dim Printer As Variant

    For Each Printer In Printers
        Debug.Print Printer
    Next
La función es ésta. Cópiala y pégala en un módulo estandar:
'---------------------------------------------------------
'
' Printers
'
' 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
'
Function Printers() As Collection
Dim wshNetwork As Object 'New wshNetwork
Dim col As New Collection
Dim i As Integer

    Set wshNetwork = CreateObject("WScript.Network")
    
    With wshNetwork.EnumPrinterConnections
        For i = 0 To .Count - 1
            If i Mod 2 <> 0 Then
                col.Add .Item(i)
            End If
        Next
    End With
    
    Set Printers = col
    
    Set col = Nothing
    Set wshNetwork = Nothing
   
End Function
'---------------------------------------------------------

Ejemplos:

printersAc97-2000.zip

 

Temas relacionados:

GetDefaultPrinter.

SetDefaultPrinter

Indicar por código la impresora para un informe

 

Última actualización: 20/2/2005