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
API : GetDefaultPrinter.
Autor/es:
Albert D. Kallal
Pregunta : ¿Hay alguna función que devuelva la impresora predeterminada del sistema?
Respuesta : Si utilizas Access XP o superior, la respuesta a tu pregunta se reduce a una simple línea de código
Application.Printer.DeviceName
En cambio, si estás utilizando Access 97 o 2000, entonces no tienes ningun objeto o propiedad que te ayude a obtenerla. De todas formas, utilizando el API de Windows he hecho esta función que hace eso que pides. Pégala en un módulo estandar:
'---------------------------------------------------------
'
' GetDefaultPrinter
'
' Código escrito originalmente por Albert D. Kallal.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
'
' Este código se brinda por cortesía de
' Albert D. Kallal (Access MVP)
'
Private Declare Function GetProfileString Lib "kernel32" _
                Alias "GetProfileStringA" _
                (ByVal lpAppName As String, _
                ByVal lpKeyName As String, _
                ByVal lpDefault As String, _
                ByVal lpReturnedString As String, _
                ByVal nSize As Long) As Long

Function GetDefaultPrinter() As String
Dim strDefault As String
Dim lngbuf As Long

    strDefault = String(255, Chr(0))
    lngbuf = GetProfileString("Windows", "Device", "", strDefault, Len(strDefault))
    If lngbuf > 0 Then
        GetDefaultPrinter = Left$(strDefault, InStr(strDefault, ",") - 1)
    Else
        GetDefaultPrinter = ""
    End If

End Function
'---------------------------------------------------------

Ejemplos:

printersAc97-2000.zip

 

Temas relacionados:

Printers

SetDefaultPrinter

Indicar por código la impresora para un informe

 

Última actualización: 20/2/2005