Listado de impresoras

28/09/2006 - 17:35 por Carlos | Informe spam
Hola a todos
A traves de código puedo ver la impresora activa en ese momento con
Application.ActivePrinter, pero ¿hay alguna forma de ver todas las impresoras
configuradas?

Un saludo

Carlos

Preguntas similare

Leer las respuestas

#6 Francisco Parrilla
29/09/2006 - 09:04 | Informe spam
Dentro de un userform prueba el siguiente condigo con un listbox:

Private Sub UserForm_Initialize()
Set WshNetwork = CreateObject("WScript.Network")
Set Printers = WshNetwork.EnumPrinterConnections
For i = 0 To Printers.Count - 1 Step 2
ListBox1.AddItem Printers.Item(i + 1)
Next
End Sub

Esto solo muestra las impresoras instaladas, igualmente con la seleccion del
listbox puedes predeterminar la impresora, a lo cual ya tienes la respuesta
:)

Saludos
Respuesta Responder a este mensaje
#7 Carlos
29/09/2006 - 09:59 | Informe spam
Tienes razón Hector. El listbox me saca el listado de impresoras pero luego
no puedo asignarla. Lo he solucionado con
Application.Dialogs(xlDialogPrinterSetup).Show

Gracias

Carlos

"Héctor Miguel" escribió:

hola, Francisco !

[hasta donde se]... para que puedas modificar una asignacion de impresora al Application.ActivePrinter...

1) una vez que tengas 'seleccionada' alguna impresora en el control 'ListBox1'...
-> como piensas 'decirle' por codigo a la aplicacion -> cual es el puerto de conexion ?

2) [de manera 'similar']...
-> como piensas indicarle por codigo a la aplicacion -> la 'preposicion' de conexion al puerto ?
'en' si es en castellano... 'on' si es en ingles... 'sur' si es en frances... etc. etc. etc. -???-

3) ['aun hay mas']...
-> como piensas resolver -posibles- 'conflictos' con los puertos 'plug&play' ? [me explico]...
el primer elemento que devueve la matriz -> 'EnumPrinterConnections' es un puerto de conexion [del sistema]
PERO... podria 'devolverte' [p.e.] un puerto USB001 [o alguna conexion de red]
-> y el Application.ActivePrinter 'mostraria' [p.e.] un puerto de conexion tipo 'Ne02'

4) [y todavia 'hay mas']...
el 'EnumPrinterConnections' tampoco te proporciona los dos puntos [para el Application.ActivePrinter] :-((

comentas ?
saludos,
hector.

__ la propuesta ofrecida __
> Dentro de un userform prueba el siguiente condigo con un listbox:
>
> Private Sub UserForm_Initialize()
> Set WshNetwork = CreateObject("WScript.Network")
> Set Printers = WshNetwork.EnumPrinterConnections
> For i = 0 To Printers.Count - 1 Step 2
> ListBox1.AddItem Printers.Item(i + 1)
> Next
> End Sub
>
> Esto solo muestra las impresoras instaladas
> igualmente con la seleccion del listbox puedes predeterminar la impresora
> a lo cual ya tienes la respuesta :)
>
> Saludos



Respuesta Responder a este mensaje
#8 Francisco Parrilla
29/09/2006 - 16:09 | Informe spam
Ok.
Prueba este codigo dentro del listbox:

Private Sub ListBox1_Click()
Set WshNetwork = CreateObject("WScript.Network")
Dim paso
MsgBox Application.ActivePrinter
paso = ListBox1.Text
WshNetwork.SetDefaultPrinter paso
MsgBox Application.ActivePrinter
End Sub

A mi me funciona :)

Saludos
Respuesta Responder a este mensaje
#9 Héctor Miguel
29/09/2006 - 17:01 | Informe spam
hola, Francisco !

es correcto... 'funciona' :D

[solo que]...
-> tendras que 'condicionar' el codigo para que NO se ejecute en versiones anteriores a excel/office XP ;)

saludos,
hector.

__ la nueva propuesta __
Ok. Prueba este codigo dentro del listbox:

Private Sub ListBox1_Click()
Set WshNetwork = CreateObject("WScript.Network")
Dim paso
MsgBox Application.ActivePrinter
paso = ListBox1.Text
WshNetwork.SetDefaultPrinter paso
MsgBox Application.ActivePrinter
End Sub

A mi me funciona :)

Saludos
Respuesta Responder a este mensaje
#10 Héctor Miguel
29/09/2006 - 17:25 | Informe spam
hola, Francisco !

y... una vez 'saltado' el codigo si Application.version < 10
... como podrias proveerle al usuario la funcionalidad que solicita Carlos -?-

saludos,
hector.

__ nueva propuesta __
Me parece que con esta linea dentro del evento initialize o bien activatedel form
se resuelve la cuestion o igual dentro de la llamada al formulario
mejor dicho antes de llamarlo hacer la validacion :)

If Application.version < 10 Then Exit Sub
... su codigo ...

Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida