Asociar desplegable a tabla excel

16/07/2007 - 14:20 por Ivan | Informe spam
Estoy realizando un documento en word con una serie de campos a rellenar. Uno
de ellos es el producto escogido. (Desplegable) hasta ahí bien. El problema
es que no se como hacer que una vez seleccionada la opción del desplegable me
muestre en un campo a parte el precio asociado.
La tabla de precios y productos estan en un excel. Desconozco la
programación en macros y no se como salirme.
Agradezco de antemano vuestras aportaciones.
Ivan

Preguntas similare

Leer las respuestas

#6 Ivan
23/07/2007 - 10:12 | Informe spam
Bien, voy a probar con lo que dices.
El listado de productos y precios no es tan larga, quizas 100 en total.

Te digo como ha ido.

Gracias
Iván.

"Tux" escribió:

Ivan escribió:
> Gracias.
>


Hola Ivan :)

Bien haciendo pruebas y demas he llegado a la conclusion de que bien
podemos hacerlo o podemos hechar mano para este caso ,utilizar
[Combinacion de correspondencia ] como explico mas abajo, que aunque no
combinemos correspondencia podemos utilizarla como truquillo o
alternativa rapida y menos pesada para el documento de word, ya que si
tienes mas de mil productos y mas de mil precios como que se nos caeria
o se nos vendria abajo el [ Dropdown ] o desplegable de la barra de
formularios, al igual que si utilizaramos un combobox de la barra de
herramientas de controles ActiveX.

Se podrian cargar en un formulario [ userform ] osea se traer los datos
de excel al userform de word y desde ahi controlar los productos y
precios , no obstante si tuvieras pocos [productos] y pocos [precios] se
podria hacer como dices [ utilizando el desplegable ], pero me temo que
la lista sera larga :( , bueno prueba lo siguiente que te propongo aqui
abajo y ya tu realizas las pruebas y me comentas ok? :-)

______Explication___________________________________

Bien podemos utilizar en este caso la [combinación de correspondencia]
de la siguiente manera:

Tenemos en el documento por ejemplo lo siguiente:

Nombre:
Direccion:
Ciudad:
Provincia:

Producto:
Precio:

Bien lo primero de todo sacamos la barra de herramientas de combinar
correspondencia para ello:

Menú Ver » Barra de herramientas » combinar correspondencia

Ahora Insertaremos un campo de los productos de tu base de datos en [
Producto ] y un campo en [ precio ] de la siguiente manera:

Click en el segundo boton de la barra de herramientas que hemos sacado [
abrir origen de datos ] se te abrira una ventana de dialogo, pues tu
solamente tienes que buscar el origen de datos, en este caso Excel , tu
archivo de Excel, y le das a abrir , eliges la hoja en la que estan los
datos y aceptas. [ no se si podrias abrir un origen de base de datos
que no sea Microsoft, no lo se eh? no lo he probado nunca :-? ]


Ahora has de insertar los campos, te colocas al lado de
[ Producto ] y click en el sexto boton [ insertar campos combinados ]
eliges el campo y dale a insertar cierra y haz lo mismo para el [
precio ] luego te vas al boton que pone [ABC] denominado [ ver datos
combinados ] y un click para ver los valores ahora cada vez que
necesites cambiar los valores o elegirlos de una lista :

Simplemente con darle al tercer boton de la barra de herramientas
combinar correspondencia que dice [ Destinatarios de combinar
correspondencia ] podras ahí seleccionar el que quieras y al darle a
aceptar, ya tendras los campos cambiados.

Mas info :

http://office.microsoft.com/es-es/w...03082.aspx

http://office.microsoft.com/es-hn/w...53082.aspx


____________Finiquitamos [ de momento ] la explication :D _______


Ya nos comentas cualquier duda ok? :-)

Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com










Respuesta Responder a este mensaje
#7 Ivan
23/07/2007 - 12:38 | Informe spam
El método de usar correspondencia es válido y funciona a la perfección
gracias a tus indicaciones claras pero... El problema es que los usuarios que
deberán cumplimentar esto no les seria ágil ni tampoco sencillo de
explicarles.

Sigo viendo la opción del "desplegable" como la mas sencilla (desde el punto
de vista de uso y cumplimentación). Comentabas el uso de userform. Que es?
Eso empieza a parecerse a programación en macros?

Gracias.

"Tux" escribió:

Ivan escribió:
> Gracias.
>


Hola Ivan :)

Bien haciendo pruebas y demas he llegado a la conclusion de que bien
podemos hacerlo o podemos hechar mano para este caso ,utilizar
[Combinacion de correspondencia ] como explico mas abajo, que aunque no
combinemos correspondencia podemos utilizarla como truquillo o
alternativa rapida y menos pesada para el documento de word, ya que si
tienes mas de mil productos y mas de mil precios como que se nos caeria
o se nos vendria abajo el [ Dropdown ] o desplegable de la barra de
formularios, al igual que si utilizaramos un combobox de la barra de
herramientas de controles ActiveX.

Se podrian cargar en un formulario [ userform ] osea se traer los datos
de excel al userform de word y desde ahi controlar los productos y
precios , no obstante si tuvieras pocos [productos] y pocos [precios] se
podria hacer como dices [ utilizando el desplegable ], pero me temo que
la lista sera larga :( , bueno prueba lo siguiente que te propongo aqui
abajo y ya tu realizas las pruebas y me comentas ok? :-)

______Explication___________________________________

Bien podemos utilizar en este caso la [combinación de correspondencia]
de la siguiente manera:

Tenemos en el documento por ejemplo lo siguiente:

Nombre:
Direccion:
Ciudad:
Provincia:

Producto:
Precio:

Bien lo primero de todo sacamos la barra de herramientas de combinar
correspondencia para ello:

Menú Ver » Barra de herramientas » combinar correspondencia

Ahora Insertaremos un campo de los productos de tu base de datos en [
Producto ] y un campo en [ precio ] de la siguiente manera:

Click en el segundo boton de la barra de herramientas que hemos sacado [
abrir origen de datos ] se te abrira una ventana de dialogo, pues tu
solamente tienes que buscar el origen de datos, en este caso Excel , tu
archivo de Excel, y le das a abrir , eliges la hoja en la que estan los
datos y aceptas. [ no se si podrias abrir un origen de base de datos
que no sea Microsoft, no lo se eh? no lo he probado nunca :-? ]


Ahora has de insertar los campos, te colocas al lado de
[ Producto ] y click en el sexto boton [ insertar campos combinados ]
eliges el campo y dale a insertar cierra y haz lo mismo para el [
precio ] luego te vas al boton que pone [ABC] denominado [ ver datos
combinados ] y un click para ver los valores ahora cada vez que
necesites cambiar los valores o elegirlos de una lista :

Simplemente con darle al tercer boton de la barra de herramientas
combinar correspondencia que dice [ Destinatarios de combinar
correspondencia ] podras ahí seleccionar el que quieras y al darle a
aceptar, ya tendras los campos cambiados.

Mas info :

http://office.microsoft.com/es-es/w...03082.aspx

http://office.microsoft.com/es-hn/w...53082.aspx


____________Finiquitamos [ de momento ] la explication :D _______


Ya nos comentas cualquier duda ok? :-)

Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com










Respuesta Responder a este mensaje
#8 Tux
23/07/2007 - 19:22 | Informe spam
Ivan escribió:
El método de usar correspondencia es válido y funciona a la perfección
gracias a tus indicaciones claras pero... El problema es que los usuarios que
deberán cumplimentar esto no les seria ágil ni tampoco sencillo de
explicarles.

Sigo viendo la opción del "desplegable" como la mas sencilla (desde el punto
de vista de uso y cumplimentación). Comentabas el uso de userform. Que es?
Eso empieza a parecerse a programación en macros?

Gracias.




Hola Ivan :)

Po Zi los [ Userform ]necesitan programacion de macros y los
desplegables que tienes en mente tambien necesitarian programacion de
macros [sobre todo para la tarea que tu necesitas ] a no ser que a mano
insertes en por ejemplo en las propiedades del deplegable, los cien
precios y cien productos a mano, con lo cual ni te cuento el faenao que
lleva eso :(

Te digo lo mismo a mi los desplegables como que tendras problemas varios
, porque tendrias que insertar los cien productos y sus cien respectivos
precios y lo del userform pues tampoco esta tan mal tus usuarios
mediante un click abriran un formulario o ventana de dialogo que en el
estaran [precios y productos ] y al darle click por ejemplo en :

[ Producto_1]

se pondra el precio y el producto en la zona del documento donde desees,
teniendo opcion a modificar el codigo como gustes :)

A todo esto, pregunto Tambien tienes 100 precios ? ten en cuenta que en
el desplegable a la hora de hacer el codigo habria que diseñarlo de tal
manera:

Por ejemplo si en el desplegable tenemos 100 productos y queremos que al
seleccionar el [ Producto_1] nos ponga [1.80] que es el precio que le
corresponde en teoria, para que veas mas o menos a lo que me refiero te
paso un enlace que seria similar a lo que tu necesitas con desplegables:

http://tinyurl.com/2o6j7w

Ojetatelo, y observa el codigo, para que veas como tendria que hacerse
mediante codigo :)

Si te prefieres lanzar por un [userform ], mas facil de entender y un
codigo no muy grande y cargando datos directamente desde excel al
userform de word [ utilizariamos Dao ] aunque te suene a chino :-D [
ahora ] ya veras que es mas facil :)

Pues lo dicho comentanos cualquiera de las opciones que prefieras y yo
te ayudo ok? :-)


Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com
Respuesta Responder a este mensaje
#9 Ivan
25/07/2007 - 00:40 | Informe spam
Buenas de nuevo,

he visto lo que me has pasado y me parece bastante sencillo aunque no
entiendo el código... pero con mi ingles de chiquito lo puedo medio entender.
El problema de esta opción es que todo esta metido dentro del código
(opciones) y si modifico precio (tarifas) deberia modificar los documentos
donde este ese precio o bien si incorporo un nuevo servicio o producto. Tela
el faenon.

Lo suyo es apuntar a una tabla excel (o sql que es donde esta todo). Esto
del DAO no se que significa pero creo que esa sera la solución mas robusta y
facil de mantener de futuro.

Adelante con tus indicaciones Gracias, gracias y gracias.




"Tux" escribió:

Ivan escribió:
> El método de usar correspondencia es válido y funciona a la perfección
> gracias a tus indicaciones claras pero... El problema es que los usuarios que
> deberán cumplimentar esto no les seria ágil ni tampoco sencillo de
> explicarles.
>
> Sigo viendo la opción del "desplegable" como la mas sencilla (desde el punto
> de vista de uso y cumplimentación). Comentabas el uso de userform. Que es?
> Eso empieza a parecerse a programación en macros?
>
> Gracias.
>

Hola Ivan :)

Po Zi los [ Userform ]necesitan programacion de macros y los
desplegables que tienes en mente tambien necesitarian programacion de
macros [sobre todo para la tarea que tu necesitas ] a no ser que a mano
insertes en por ejemplo en las propiedades del deplegable, los cien
precios y cien productos a mano, con lo cual ni te cuento el faenao que
lleva eso :(

Te digo lo mismo a mi los desplegables como que tendras problemas varios
, porque tendrias que insertar los cien productos y sus cien respectivos
precios y lo del userform pues tampoco esta tan mal tus usuarios
mediante un click abriran un formulario o ventana de dialogo que en el
estaran [precios y productos ] y al darle click por ejemplo en :

[ Producto_1]

se pondra el precio y el producto en la zona del documento donde desees,
teniendo opcion a modificar el codigo como gustes :)

A todo esto, pregunto Tambien tienes 100 precios ? ten en cuenta que en
el desplegable a la hora de hacer el codigo habria que diseñarlo de tal
manera:

Por ejemplo si en el desplegable tenemos 100 productos y queremos que al
seleccionar el [ Producto_1] nos ponga [1.80] que es el precio que le
corresponde en teoria, para que veas mas o menos a lo que me refiero te
paso un enlace que seria similar a lo que tu necesitas con desplegables:

http://tinyurl.com/2o6j7w

Ojetatelo, y observa el codigo, para que veas como tendria que hacerse
mediante codigo :)

Si te prefieres lanzar por un [userform ], mas facil de entender y un
codigo no muy grande y cargando datos directamente desde excel al
userform de word [ utilizariamos Dao ] aunque te suene a chino :-D [
ahora ] ya veras que es mas facil :)

Pues lo dicho comentanos cualquiera de las opciones que prefieras y yo
te ayudo ok? :-)


Saludos
Monica




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com










Respuesta Responder a este mensaje
#10 Tux
25/07/2007 - 12:49 | Informe spam
Hola Ivan :-) !!

Ivan escribió:


Lo suyo es apuntar a una tabla excel (o sql que es donde esta todo). Esto
del DAO no se que significa pero creo que esa sera la solución mas robusta y
facil de mantener de futuro.




Bien vamos a crear tres documentos de word, de tres maneras diferentes:

1) Utilizando DAO [ Data Access Object ] » que no es mas que un
componente que se utiliza para acceder a Datos, cuya DLL [ librería ] es:

[ Microsoft DAO 3.6 Object Library ] donde [ 3.6 ] hace referencia a la
ultima librería Actualizada.


2) Utilizando ADO [ Active X DAta Object ] mecanismo para comunicarnos
con las bases de datos, por ejemplo para comunicarnos con una base de
datos SQL server y la librería que utiliza es la :

Microsoft ActiveX Data Objects 2.8 Library [ donde 2.8 hace referencia
a la ultima version actualizada ]

3) Mediante automatizacion normal y corriente



Bien Utilizando DAO :

Primero de todo vas a ir a tu archivo de excel y vas a definir un nombre
a tu rango de datos para ello :

1º Abres excel
2º Seleccionas solo los datos de las dos columnas [Precios y Productos ]
3º Una vez seleccionados te vas a Menu » Insertar » nombre » Definir
Y ahi pones como nombre por ejemplo » Myrango

Ya que ese nombre lo utilizaremos en el codigo ok? :)

TAmbien puedes crear o definir nombres de rangos dinamicos por si en el
futuro quisieras ampliar la lista de precios y productos. [ pero de
momento lo dejamos asi ]

Bien una vez realizado esto , nos vamos a abrir un documento nuevo de
word [ puedes guardarlo con el nombre que quieras una vez abierto o
cuando acabemos de crear el Userform ]

Bien una vez abierto nuestro documento de word, vamos a visual basic
aplicaciones de word con el atajo de teclado:

Alt+F11

Veras que se abre Visual basic para word pues bien:

Lo primero de todo es ir a menu herramientas » Referencias y ahi tienes
que buscar la librería que hemos citado en el punto 1) :

[ Microsoft DAO 3.6 Object Library ]

Buscala seleccionala y click en aceptar y luego ya a crear el Userform
para ello:


Te diriges al menu » insertar » Userform

Para que veas mas o menos que imagen tiene un Userform te paso el
siguiente articulo que prepare para Maria y para los que aqui en news
word andamos: [ esto es solo ilustrativo, no tiene nada que ver con el
tema que aqui explicamos eh? solo es para que te famirialices :-P ]

http://www.fermu.com/content/view/514/2/lang,es/

Si hubiera tenido mas tiempo hubiera preado un flash demostrativo de
todo esto [ pero ya lo hare para el fin de semana, espero amos jejejej!
:-P ]

Bien Veras que tienes ahi un cuadro de herramientas, pues tu con el
cursor situate encima de ellos y busca uno que diga [ Label ] le das un
click, y ya puedes ponerlo en el Userform [arrastrando ]

Luego Buscas uno que diga [ Listbox ] y click y lo pones en el Userform
[ como si dibujaras autoformas ]

Y luego lo mismo pero buscando uno que diga [ commandbutton ]

Una vez hecho esto, podemos modificar los nombres de por ejemplo:

[ label ] y en lugar de que aparezca Label1 podemos poner por ejemplo :

[ Introducir datos ]

Para ello pulsamos la tecla [ F4] nos apareceran las propiedades del
Userform, del label del listbox y del commandbutton y desde ahi puedes
modificar el color, los nombres, posicion etc aqui solo vamos a
cambiar el nombre para ello:

Busca ahi la propiedad Ojo » [ Caption ] no la propiedad que dice »
(Name) busca la propiedad [ Caption ]y donde pone Userform1 pones por
ejemplo :

My Userform [ o lo que quieras ]

Asi con el Label y con el commandbutton1 , el listbox1 dejalo asi tal
cual ok? :)

Bien ya tenemos nuestro [ userform ] montado pues ahora vamos a ponerle
el codigo para ello:

Un click derecho con el raton en cualquier parte del Userform y click en
ver codigo :

Selecciona lo que te aparece ahi y suprimelo o borralo y pon el
siguiente codigo [ copialo de aqui y lo puedes pegar ahi ok!! ]:

'[]

Private Sub UserForm_Initialize()

Dim BaseDatos As DAO.Database
Dim registros As DAO.Recordset
Dim x As Long
Dim y As Long

Set BaseDatos = OpenDatabase _
("C:\libro1.xls", False, False, "Excel 8.0")
Set registros = BaseDatos.OpenRecordset("SELECT * FROM myrango ")

x = 0
ListBox1.ColumnCount = registros.Fields.Count

While Not registros.EOF
Me.ListBox1.AddItem registros.Fields(0).Value
For y = 1 To registros.Fields.Count - 1
ListBox1.List(x, y) = registros.Fields(y).Value
Next y
registros.MoveNext
x = x + 1
Wend

registros.Close
BaseDatos.Close
Set registros = Nothing
Set BaseDatos = Nothing

End Sub

Private Sub CommandButton1_Click()

Dim Myrango As Word.Range
Dim marcador As Bookmarks

Set marcador = ActiveDocument.Bookmarks
Set Myrango = marcador("marcador_1").Range

Myrango.Text = ListBox1.List(ListBox1.ListIndex, 1)
marcador.Add "marcador_1", Myrango

Set Myrango = marcador("marcador_2").Range
Myrango.Text = ListBox1.Text
marcador.Add "marcador_2", Myrango

Me.Hide
End Sub

'[]


Bien lo unico que tienes que retocar en el codigo son las siguientes lineas:

Set BaseDatos = OpenDatabase _
("C:\libro1.xls", False, False, "Excel 8.0")
Set registros = BaseDatos.OpenRecordset("SELECT * FROM myrango ")


exactamente donde pone ("C:\libro1.xls"

Ahi tienes que poner tu ruta exacta donde tengas el libro ejemplo:

("C:\documents and settings\Usuario\Escritorio\Libro1.xls"

Tal cual lo tengas ok? :)

Y luego donde dice ("SELECT * FROM myrango ") pues tu varia myrango por
el nombre definido que hayamos creado en excel ok? :)

Y luego [ ya falta poco para terminar jejejejje! :-P ] bien el el codigo

Private Sub CommandButton1_Click()

que sera cuando nosotros le demos al boton para que se inserten los
datos en el documento de word, ahi veras que tendras que retocar los
marcadores:

donde ponga marcador_1 por el nombre del marcador que hayas elegido en
el documento y lo mismo para el marcador_2 . [de momento vamos a dejar
esos ok?

y ahora te diriges a menu insertar > modulo

y ahi en el escenario que se te abrira pon el siguiente codigo :

'[]

Sub prueba()
UserForm1.show
End Sub

'[]

Cierra visual basic de word y ahora en el documento inserta dos marcadores:

Escribe Hola la seleccionas y te vas a menu » insertar » marcador » y
escribes marcador_1

Escribes por ejemplo Adios, seleccionas e insertas marcador y escribes
marcador_2

y ya puedes probar el Userform . [ alt+F8 ] o menu herramientas > macro
macros y ejecutas la macro [ prueba ]




Y si algo me he comido o te diera errores o demas ya sabes nos comentas
ok? :-)

Saludos
Monica


PD: Una vez realices esto realizaremos el Punto 2) y 3) que no sera tan
largo :-P




Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

Now We are free [Enya]

www.fermu.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida