Access - Elegir en VBA una impresora

 
Vista:
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 01/07/2011 21:57:23
Buenas.

Tengo un formulario Factura que debo imprimir, pero tengo dos impresoras en dos plantas diferentes (HP-C3180 y una OKI). Cual es el código para que al pulsar en un botón imprima en la HP y al pulsar en otro botón vaya a la OKI?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Elegir en VBA una impresora

Publicado por 2pl (461 intervenciones) el 02/07/2011 10:58:04
En teoria deberia salir por la impresora predeterminada de cada PC, diferente seria si un mismo PC tuviese dos impresoras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 03/07/2011 21:19:54
Perdón, no me espliqué correctamente.

En efecto tengo un solo PC y dos impresoras.

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elegir en VBA una impresora

Publicado por 2pl (53 intervenciones) el 03/07/2011 22:53:06
Create una tabla con dos campos "impresora" y "asignar"
El campo impresora contendrá el nombre con el que tienes definida la 1ª impresora y en asignar un 1
el segundo registro el nombre de la otra impresora y en asignar un 2
repite este codigo para cada boton de selección de impresora y cambia el 1 por el 2 en el segundo boton.
Dim ImprActiva As String
Dim ImprN As Printer
' Establecer la impresora especifica que está asignada en la tabla "Impresoras"
ImprActiva = DLookup("[impresora]", "Impresoras", "[asignar]=1")
If ImprActiva = "" Then
MsgBox "No tiene impresora asignada para los informes"
Exit Sub
Else
For Each ImprN In Application.Printers
If ImprN.DeviceName = ImprActiva Then
Set Application.Printer = ImprN
End If
Next
End If

Espero que lo entiendas y si no, me envias un mensaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 04/07/2011 17:05:02
Buenas 2pl. He hecho algún cambio con respecto a lo que me has mandado, pero no logro hacerlo funcionar.

Private Sub ImprimirFactura_Click()
Dim ImprActiva As String
Dim ImprN As Printer
' Establecer la impresora especifica que está asignada en la tabla "Impresoras"
ImprActiva = "HP Photosmart C3100 series" 'DLookup("[impresora]", "Impresoras", "[asignar]=1")
If ImprActiva = "" Then
MsgBox "No tiene impresora asignada para los informes"
Exit Sub
Else
For Each ImprN In Application.Printers
If ImprN.DeviceName = ImprActiva Then
Set Application.Printer = ImprN
End If
Next
End If
End Sub

La verdad es que lo único que quiero es que cuando pulse el botón 1 imprima por la impresora HP, y cuando pulse el botón 2 imprima por la OKI. ¿No se podría hacer esto con las líneas del For al Next?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elegir en VBA una impresora

Publicado por 2pl (53 intervenciones) el 04/07/2011 17:27:33
¿ Has probado con el ejemplo que te envie?
ImprActiva = "HP Photosmart C3100 series" 'DLookup("[impresora]", "Impresoras", "[asignar]=1")
no se porque has puesto "HP Photosmart C3100 series", mirate el DLookup en la ayuda y veras como es.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 04/07/2011 22:15:40
Buenas 2pl.

He visto el DLookup en la ayuda y en algunos manuales, y creo que lo entiendo:

"[impresora]", se refiere al nombre de la impresora elegida en el campo impresora de la tabla "impresoras"; siguiente apartado es la tabla "impresoras", y "asignar" es el valor de la impresora.

He puesto directamente "HP Photosmart C3100 series" para así evitarme el comando DLookup. Pero nada.

Creo que las siguientes lineas las entiendo bien:
For Each ImprN In Application.Printers 'impresoras que existen
If ImprN.DeviceName = ImprActiva Then 'impresora que elijo mediante "DLookup"
Set Application.Printer = ImprN 'toma el nombre de impresora elegida para imprimir
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elegir en VBA una impresora

Publicado por 2pl (53 intervenciones) el 05/07/2011 20:09:36
Lo que te pongo funciona correctamente.
Tengo una tabla (impresoras) con dos campos, "impresora" como texto y asignar como numero entero
dos registros
1º registro, campo impresora el nombre de una de ellas y en asignar un 1
2º registro, campo impresora el nombre de la otra y en asignar un 2

Private Sub Boton1_Click()
Dim ImprActiva As String
Dim ImprN As Printer
' Establecer la impresora especifica que está asignada en la tabla "Impresoras"
ImprActiva = DLookup("[impresora]", "Impresoras", "[asignar]=1")
If ImprActiva = "" Then
MsgBox "No tiene impresora asignada para los informes"
Exit Sub
Else
For Each ImprN In Application.Printers
If ImprN.DeviceName = ImprActiva Then
Set Application.Printer = ImprN
End If
Next
End If
DoCmd.OpenReport "Demanda de pedidos", acViewNormal
End Sub

Private Sub Boton2_Click()
Dim ImprActiva As String
Dim ImprN As Printer
' Establecer la impresora especifica que está asignada en la tabla "Impresoras"
ImprActiva = DLookup("[impresora]", "Impresoras", "[asignar]=2") el 1 entre comillas simples y fin con comilla doble
If ImprActiva = "" Then
MsgBox "No tiene impresora asignada para los informes"
Exit Sub
Else
For Each ImprN In Application.Printers
If ImprN.DeviceName = ImprActiva Then
Set Application.Printer = ImprN
End If
Next
End If
DoCmd.OpenReport "Demanda de pedidos", acViewNormal
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 06/07/2011 21:07:04
Buenas.

Ya he seguido tus instrucciones. He creado una tabla, dos campos, introducido los valores, etc., etc., he creado dos botones en el formulario que quiero imprimir, pero cuando pulso en cualquiera de los dos botones no hace nada.

Esta tabla es independiente o hay que relacionarla con algo?

Hay que poner en el formulario los dos campos de la tabla ("impresora", "asignar")?

Mañana volverá a repasarlo por si hubiera escrito algo mal, pero el caso es que no me da error, sólo que no hace nada.

Un saludo y gracias, mañana te cuento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elegir en VBA una impresora

Publicado por 2pl (461 intervenciones) el 06/07/2011 22:24:02
No hay que relacionar nada ni poner nada en el formulario, salvo los dos botones y simplemente que los nombres de las impresoras sean iguales a los que tienes configurados en el PC
DoCmd.OpenReport "aqui pones el nombre de tu informe", acViewNormal
Ya te digo, lo he probrado y funciona correctamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 07/07/2011 18:44:50
Muchas gracias.
Efectivamente funciona escribiendo todo el código como tu dices, sin relacionar ni poner nada en el formulario. Pero creo que no me he explicado bien. Lo que quiero es lo siguiente:

Yo tengo un formulario con un subformulario, en el cual introduzco los datos. A partir de este formulario y medante un combobox elejo imprimir un formulario factura, presupuesto, albarán, etc.
Si elijo por ejemplo Factura, se abre un formulario con la factura correspondiente al cliente. Pues bien, es desde aquí, desde donde quiero los dos botones para que imprima por una impresora o por otra.

No quiero abrir informes, ni tampoco imprimir informes, quiero imprimir el formulario que tengo a la vista, por la impresora que le indique.

Muchas gracias 2PL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 07/07/2011 19:02:47
Perdona 2PL creo que ya lo he descubierto. Mira lo que he hecho:

He cambiado la línea
DoCmd.OpenReport "Demanda de pedidos", acViewNormal

por
DoCmd.PrintOut

y solucionado el problema

Siento haberte dado tantas molestias, pero estoy empezando y soy muy novata.

Muchas gracias por tu gran ayuda, sin tí no lo habría logrado.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Elegir en VBA una impresora

Publicado por 2PL (461 intervenciones) el 07/07/2011 20:55:10
Ese comando tiene algunas otras opciones, dando F1 encima de la palabreja PrintOut te sale la ayuda
DoCmd.PrintOut acPages, 1, 2 etc.....
Un cordial saludo desde Cádiz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Elegir en VBA una impresora

Publicado por Nomada (171 intervenciones) el 08/07/2011 14:34:45
Gracias 2PL es bueno saber lo del F1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar