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 |