Function VerificaPuertoImpresoraOK() As Boolean
    VerificaPuertoImpresoraOK = True

    Dim mHandle As Long
    Dim lpErrors As Long
    Dim x As COMSTAT

    mHandle = CreateFile("LPT1:", GENERIC_WRITE Or GENERIC_READ, _
    0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)

    If mHandle < 0 Then
         sMensajeErrorImpresora = "Error de apertura del puerto de la
impresora."
         VerificaPuertoImpresoraOK = False
    Else
        If ClearCommError(mHandle, lpErrors, x) = False Then
            sMensajeErrorImpresora = "Error en ClearCommError de la
impresora."
            VerificaPuertoImpresoraOK = False
        End If
    End If

    If lpErrors And CE_BREAK Then
        sMensajeErrorImpresora = "Error genérico de la impresora."
        VerificaPuertoImpresoraOK = False
    End If

    If lpErrors And CE_PTO Then
        sMensajeErrorImpresora = "Impresora no disponible en este momento."
        VerificaPuertoImpresoraOK = False
    End If

    If lpErrors And CE_IOE Then
        sMensajeErrorImpresora = "Error de entrada/salida."
        VerificaPuertoImpresoraOK = False
    End If

    If lpErrors And CE_DNS Then
        Debug.Print "Impresora apagada o Dispositivo no seleccionado."
        VerificaPuertoImpresoraOK = False
    End If

    If lpErrors And CE_OOP Then
        sMensajeErrorImpresora = "Impresora sin papel."
        VerificaPuertoImpresoraOK = False
    End If

    CloseHandle mHandle
End Function

 