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

#11 Ivan
25/07/2007 - 23:52 | Informe spam
Lo miro mañana y te digo como ha ido. Voy muy liado estos dias. ;-)




"Tux" escribió:

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
#12 Ivan
20/08/2007 - 09:58 | Informe spam
Primero, disculpa pero entre liado, y las vacaciones no he avanzado mucho que
digamos. ;-)

Por otro lado, he probado la primera opción DAO y funciona correctamente.
Ademas tus indicaciones son precisas y no hay error. Por otro lado, aunque
con eso podria tirar, el saber no ocupa lugar y me gustaria que me explicaras
las otras dos opciones (ActiveX y Automatización)

Luego supongo que pasar eso a una consulta SQL sera sencillo.

Gracias una vez mas y disculpame pero en vacaciones prefiero no llevarme el
portatil.

Ivan

"Tux" escribió:

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
#13 Tux
21/08/2007 - 12:49 | Informe spam
Ivan escribió:
Primero, disculpa pero entre liado, y las vacaciones no he avanzado mucho que
digamos. ;-)

Por otro lado, he probado la primera opción DAO y funciona correctamente.
Ademas tus indicaciones son precisas y no hay error. Por otro lado, aunque
con eso podria tirar, el saber no ocupa lugar y me gustaria que me explicaras
las otras dos opciones (ActiveX y Automatización)

Luego supongo que pasar eso a una consulta SQL sera sencillo.

Gracias una vez mas y disculpame pero en vacaciones prefiero no llevarme el
portatil.

Ivan




Hola Ivan ;-) !!

Si que es sencillo veras para el segundo archivo es lo mismo que el
primero, los mismos pasos perooo esta vez haremos referencia a la
biblioteca:

[ Microsoft ActiveX Data Objects 2.8 Library ] ( o la ultima que
tengamos actualizada )

y pondremos el siguiente codigo:

'[]


Private Sub UserForm_Initialize()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM lunes", cnn, adOpenKeyset
With Me.ListBox1
.ColumnCount = rst.Fields.Count
.Column = rst.GetRows(rst.RecordCount)
End With
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing

End Sub


'[]

Para el boton CommandButton del nuevo formulario sera el mismo codigo
que el anterior:

'[]

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

'[]

Para llamar a Userform2 nuevo que hemos creado:

'[]

Sub prueba2()
UserForm2.show
End Sub

'[]



En estas lineas de codigo son las que tendrias que variar para hacer la
llamada a tu base de datos SQL [ lo demas quedaria tal cual :-) ]:

With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM myrango", cnn, adOpenKeyset


Te paso una web que esta muy bien sobre conexiones [ ODBC Driver for SQL
Server] para que hagas observes el codigo a añadir con tu base de datos :-)

http://www.carlprothman.net/Default.aspx?tabid#ODBCDriverForSQLServer

Luego te voy a pasar unos enlaces para que les des un vistacillo :)


http://www.basenow.com/help/About_C...trings.asp
http://www.asp101.com/articles/john...efault.asp

Y este en español de Enrique Martínez Montejo :

http://www.mvp-access.com/softjaen/..._excel.htm

Y luego mediante automatizacion normal y corriente te lo preparo para
mañana o el jueves ok? :-) asi yo voy mas descansada :-P !!

Lo dicho que descanses bien estas vaciones eh? primero el descanso y
luego el trabajo, que sin esos descansos el cuerpo no rinde lo mismo ;-) !!

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
#14 Ivan
22/08/2007 - 09:50 | Informe spam
No tengas prisa.

Voy a seguir tus indicaciones y a leer los articulos que apuntas. Como soy
bastante inexperto en la materia me cuesta ir asimilando y reconozco que voy
lentito... pero me voy defendiendo.

Gracias de nuevo.
Ivan

"Tux" escribió:

Ivan escribió:
> Primero, disculpa pero entre liado, y las vacaciones no he avanzado mucho que
> digamos. ;-)
>
> Por otro lado, he probado la primera opción DAO y funciona correctamente.
> Ademas tus indicaciones son precisas y no hay error. Por otro lado, aunque
> con eso podria tirar, el saber no ocupa lugar y me gustaria que me explicaras
> las otras dos opciones (ActiveX y Automatización)
>
> Luego supongo que pasar eso a una consulta SQL sera sencillo.
>
> Gracias una vez mas y disculpame pero en vacaciones prefiero no llevarme el
> portatil.
>
> Ivan
>

Hola Ivan ;-) !!

Si que es sencillo veras para el segundo archivo es lo mismo que el
primero, los mismos pasos perooo esta vez haremos referencia a la
biblioteca:

[ Microsoft ActiveX Data Objects 2.8 Library ] ( o la ultima que
tengamos actualizada )

y pondremos el siguiente codigo:

'[]


Private Sub UserForm_Initialize()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM lunes", cnn, adOpenKeyset
With Me.ListBox1
.ColumnCount = rst.Fields.Count
.Column = rst.GetRows(rst.RecordCount)
End With
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing

End Sub


'[]

Para el boton CommandButton del nuevo formulario sera el mismo codigo
que el anterior:

'[]

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

'[]

Para llamar a Userform2 nuevo que hemos creado:

'[]

Sub prueba2()
UserForm2.show
End Sub

'[]



En estas lineas de codigo son las que tendrias que variar para hacer la
llamada a tu base de datos SQL [ lo demas quedaria tal cual :-) ]:

With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM myrango", cnn, adOpenKeyset


Te paso una web que esta muy bien sobre conexiones [ ODBC Driver for SQL
Server] para que hagas observes el codigo a añadir con tu base de datos :-)

http://www.carlprothman.net/Default.aspx?tabid#ODBCDriverForSQLServer

Luego te voy a pasar unos enlaces para que les des un vistacillo :)


http://www.basenow.com/help/About_C...trings.asp
http://www.asp101.com/articles/john...efault.asp

Y este en español de Enrique Martínez Montejo :

http://www.mvp-access.com/softjaen/..._excel.htm

Y luego mediante automatizacion normal y corriente te lo preparo para
mañana o el jueves ok? :-) asi yo voy mas descansada :-P !!

Lo dicho que descanses bien estas vaciones eh? primero el descanso y
luego el trabajo, que sin esos descansos el cuerpo no rinde lo mismo ;-) !!

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
#15 Ivan
24/08/2007 - 15:02 | Informe spam
Bien con el ActiveX Data Objetct. Observo que solo me coge a partir del
segundo dato del las lineas de Excel. Por otro lado esperare a la tercera
opción pero creo que esto ya soluciona mucho la cuestión planteada en inicio.

Ahora estaba mirando para que los campos del formulario llamaran a la macro
y mostraran el marcador pero cuando bloqueo el formulario (candado) me
aparece un error de Macro en el que dice que no puedo modificar debido a que
el formulario esta protegido. Como puedo hacerlo para que los usuarios se
limiten solo a tocar los campos de texto libre y que al entrar en un campo
(ej.: precio) ejecute correctamente la macro y muestre el marcador sin que me
aparezca el error.

Muchissimas gracias.
Iván



"Tux" escribió:

Ivan escribió:
> Primero, disculpa pero entre liado, y las vacaciones no he avanzado mucho que
> digamos. ;-)
>
> Por otro lado, he probado la primera opción DAO y funciona correctamente.
> Ademas tus indicaciones son precisas y no hay error. Por otro lado, aunque
> con eso podria tirar, el saber no ocupa lugar y me gustaria que me explicaras
> las otras dos opciones (ActiveX y Automatización)
>
> Luego supongo que pasar eso a una consulta SQL sera sencillo.
>
> Gracias una vez mas y disculpame pero en vacaciones prefiero no llevarme el
> portatil.
>
> Ivan
>

Hola Ivan ;-) !!

Si que es sencillo veras para el segundo archivo es lo mismo que el
primero, los mismos pasos perooo esta vez haremos referencia a la
biblioteca:

[ Microsoft ActiveX Data Objects 2.8 Library ] ( o la ultima que
tengamos actualizada )

y pondremos el siguiente codigo:

'[]


Private Sub UserForm_Initialize()

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM lunes", cnn, adOpenKeyset
With Me.ListBox1
.ColumnCount = rst.Fields.Count
.Column = rst.GetRows(rst.RecordCount)
End With
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing

End Sub


'[]

Para el boton CommandButton del nuevo formulario sera el mismo codigo
que el anterior:

'[]

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

'[]

Para llamar a Userform2 nuevo que hemos creado:

'[]

Sub prueba2()
UserForm2.show
End Sub

'[]



En estas lineas de codigo son las que tendrias que variar para hacer la
llamada a tu base de datos SQL [ lo demas quedaria tal cual :-) ]:

With cnn
.ConnectionString = "Provider=MSDASQL;" & _
"Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\Documents and Settings\Usuario\Escritorio\libro1.xls"
.Open
End With
rst.Open "SELECT * FROM myrango", cnn, adOpenKeyset


Te paso una web que esta muy bien sobre conexiones [ ODBC Driver for SQL
Server] para que hagas observes el codigo a añadir con tu base de datos :-)

http://www.carlprothman.net/Default.aspx?tabid#ODBCDriverForSQLServer

Luego te voy a pasar unos enlaces para que les des un vistacillo :)


http://www.basenow.com/help/About_C...trings.asp
http://www.asp101.com/articles/john...efault.asp

Y este en español de Enrique Martínez Montejo :

http://www.mvp-access.com/softjaen/..._excel.htm

Y luego mediante automatizacion normal y corriente te lo preparo para
mañana o el jueves ok? :-) asi yo voy mas descansada :-P !!

Lo dicho que descanses bien estas vaciones eh? primero el descanso y
luego el trabajo, que sin esos descansos el cuerpo no rinde lo mismo ;-) !!

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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida