codigo SOLVER

24/01/2009 - 18:06 por j_lete | Informe spam
Buenas tardes:
He creado una macro para ejecutar solver que va a ser utilizada por usuarios
con nivel muy basico, por lo que si en su puesto no tienen activada la
libreria correspondiente no les va a funcionar.
Existe algun código que permita ejecutar la macro sin tener que activar la
librería?
Si no es así, ¿alguien sabe donde puedo encontrar un codigo que haga lo
mismo que solver?
Gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/01/2009 - 01:58 | Informe spam
hola, !

He creado una macro para ejecutar solver que va a ser utilizada por usuarios con nivel muy basico
por lo que si en su puesto no tienen activada la libreria correspondiente no les va a funcionar.
Existe algun codigo que permita ejecutar la macro sin tener que activar la libreria?
Si no es asi, alguien sabe donde puedo encontrar un codigo que haga lo mismo que solver?



- podrias por codigo buscar/activar la libreria correspondiente (asumiendo que esta instalada en estado inactivo)

- (de lo contrario) conseguir/desarrolar/... un codigo que haga "lo mismo" que la herramienta del solver...
(probablemente) dependeria de cuales caracteristicas del solver son las que utiliza tu macro -?-
(quizas con dos -o mas- bucles y una o mas llamadas a procedimientos auxiliares ?)

saludos,
hector.
Respuesta Responder a este mensaje
#2 j_lete
17/02/2009 - 20:24 | Informe spam
Hola Hector:
El codigo es muy sencillo:

Sub SOLVER()
Dim par As Double
par = InputBox("Introducir T.A.E.")
SolverReset
SolverOk SetCell:="$C$13", MaxMinVal:=3, ValueOf:=par, ByChange:="$C$8"
SolverSolve
End Sub

Respecto a la macro, en efecto será instalada (si consigo solucionar el
problema) en bastantes PC's, todos con la misma versión de excel (de momento
2003 puede que en el futuro 2007).

Para la 2ª opción mi pregunta era sobre si alguien conoce algun foro/pagina
que tenga disponible algún código que funcione como la función solver
Gracias

"Héctor Miguel" escribió:

hola, !

> ... respecto a la 1ª opcion he intentado una macro para activar la libreria
> pero se ve que la pasar al editor de visual, la macro no graba nada.
> Respecto a la 2ª opcion, la verdad, no sabria como hacerlo.

la primera opcion (creo que) no seria necesaria, puesto que la referencia se estabece desde el origen del libro
a menos que... tu libro vaya a ser usado en distintas pc's y/o versiones de excel (ha tenido dos o tres modificaciones)

de la segunda opcion, tampoco por "este lado" (del mensaje) se podria averiguar "como hacer... que ???"

para ambas opciones, seria "sano" si expones tu codigo y/o las llamadas que haces al solver
(y comentas a cuantas y cuales versiones de excel te intersaria "dar soporte") -???-

saludos,
hector.

__ OP __
>>> He creado una macro para ejecutar solver que va a ser utilizada por usuarios con nivel muy basico
>>> por lo que si en su puesto no tienen activada la libreria correspondiente no les va a funcionar.
>>> Existe algun codigo que permita ejecutar la macro sin tener que activar la libreria?
>>> Si no es asi, alguien sabe donde puedo encontrar un codigo que haga lo mismo que solver?
>>
>> - podrias por codigo buscar/activar la libreria correspondiente (asumiendo que esta instalada en estado inactivo)
>>
>> - (de lo contrario) conseguir/desarrolar/... un codigo que haga "lo mismo" que la herramienta del solver...
>> (probablemente) dependeria de cuales caracteristicas del solver son las que utiliza tu macro -?-
>> (quizas con dos -o mas- bucles y una o mas llamadas a procedimientos auxiliares ?)



Respuesta Responder a este mensaje
#3 Héctor Miguel
17/02/2009 - 21:52 | Informe spam
hola, !

El codigo es muy sencillo:
Sub SOLVER()
Dim par As Double
par = InputBox("Introducir T.A.E.")
SolverReset
SolverOk SetCell:="$C$13", MaxMinVal:=3, ValueOf:=par, ByChange:="$C$8"
SolverSolve
End Sub
Respecto a la macro, en efecto sera instalada (si consigo solucionar el problema) en bastantes PC's
todos con la misma version de excel (de momento 2003 puede que en el futuro 2007).



la macro que expones fue creada con la version 97 o 2000 de excel (por el tipo de llamadas a SolverOk, SolverSolve, etc.)

Para la 2ª opcion mi pregunta era sobre si alguien conoce algun foro/pagina
que tenga disponible algun codigo que funcione como la funcion solver



para esta segunda parte (sin que pierdas de vista el comentario a la primera)...
toma nota de los siguientes comentarios y... si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

1) es probable que cuando ejecutas la macro sea en una sesion fresca de excel ?
(es decir, cuando NO se ha ejecutado la herramienta del solver desde la interfase de usuario) -?-

2) (hasta donde se)... deberas tomar en cuenta las siguientes observaciones:
para poder usar el solver (por codigo), es necesario que el complemento solver.xla este cargado en la sesion...
para lo cual, tienes -al menos- dos opciones/alternativas/formas/... para cargarlo:
a) usarlo en vivo y a todo color (o sea, desde la interfase de usuario desde el menu herramientas / ... etc.)
b) establecer una referencia (en el proyecto de macros) a la libreria solver.xla (NO solver.dll)
-> buscando la ubicacion apropiada con (menu) (herramientas / referencias <-
(la cual, pudiera variar segun la version -ingles/espa#ol- del sistema operativo)
- hay ligeros cambios entre excel 97/2000 y excel xp/2003 ...
las llamadas (por codigo) a las funciones del solver (como SolverOK, SolverAdd, etc.)
en xp/2003 pasan (reducidas) a: SolvOK, SolvAdd, etc. les sobra el sufijo ->(solv)ER<-
- (probablemente) la primera vez que lo ejecutes mandara un mensaje de error:
->error inesperado o memoria agotada<- :((
para resolverlo (y SOLO por unica vez) tendras que usar la siguiente instruccion...
->Application.Run "Solver.xla!Auto_Open"<-
- tomar en cuenta IDIOMAS p.e.
para FormulaText:= en castellano binario debe cambiarse por binary (si se correra en un excel en ingles) -?-
- tomar precauciones si se va a correr en hojas protegidas <= OJO

(solo por no dejarlo en el tintero)...

1) ya comprobaste que la herramienta este habilitada desde (menu) herramientas / complementos -?-

2) revisa en (menu) ayuda / acerca de microsoft excel / (boton) elementos deshabilitados...

3) asegurate que la libreria (solver.dll) se encuentre en la misma ubicacion que el complemento (solver.xla)

4) prueba ejecutando el solver por segunda (y/o quizas tercera) ocasion -?-
(incluso cerrando y volviendo a abrir el excel)

(probablemente existan otras soluciones ?)... comentas si algo de lo anterior funciona ?
Respuesta Responder a este mensaje
#4 j_lete
10/03/2009 - 19:46 | Informe spam
Hola:
Respecto a lo que me indicas y teniendo en cuenta como comenté que se
tendria que ejecutar en unos 1000 Pc's y dado que los usuarios son nivel
básico en su mayoría. he realizado una prueba añadiendo a la macro la
instrucción que indicas Application.Run "Solver.xla!Auto_Open, pero si no
tienes marcada en la librería solver.xla, no me funciona.
Por tanto al final vamos a realizar algo más simple parecido a un buscar
objetivo donde el usuario introduce un valor, y mediante un bucle y partiendo
de 3 valores maximo, medio y minimo, se va ajustando al valor buscado hasta
que la diferencia sea (por ejemplo) de 1 milésima.
Saludos

"Héctor Miguel" escribió:

hola, !

> El codigo es muy sencillo:
> Sub SOLVER()
> Dim par As Double
> par = InputBox("Introducir T.A.E.")
> SolverReset
> SolverOk SetCell:="$C$13", MaxMinVal:=3, ValueOf:=par, ByChange:="$C$8"
> SolverSolve
> End Sub
> Respecto a la macro, en efecto sera instalada (si consigo solucionar el problema) en bastantes PC's
> todos con la misma version de excel (de momento 2003 puede que en el futuro 2007).

la macro que expones fue creada con la version 97 o 2000 de excel (por el tipo de llamadas a SolverOk, SolverSolve, etc.)

> Para la 2ª opcion mi pregunta era sobre si alguien conoce algun foro/pagina
> que tenga disponible algun codigo que funcione como la funcion solver

para esta segunda parte (sin que pierdas de vista el comentario a la primera)...
toma nota de los siguientes comentarios y... si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

1) es probable que cuando ejecutas la macro sea en una sesion fresca de excel ?
(es decir, cuando NO se ha ejecutado la herramienta del solver desde la interfase de usuario) -?-

2) (hasta donde se)... deberas tomar en cuenta las siguientes observaciones:
para poder usar el solver (por codigo), es necesario que el complemento solver.xla este cargado en la sesion...
para lo cual, tienes -al menos- dos opciones/alternativas/formas/... para cargarlo:
a) usarlo en vivo y a todo color (o sea, desde la interfase de usuario desde el menu herramientas / ... etc.)
b) establecer una referencia (en el proyecto de macros) a la libreria solver.xla (NO solver.dll)
-> buscando la ubicacion apropiada con (menu) (herramientas / referencias <-
(la cual, pudiera variar segun la version -ingles/espa#ol- del sistema operativo)
- hay ligeros cambios entre excel 97/2000 y excel xp/2003 ...
las llamadas (por codigo) a las funciones del solver (como SolverOK, SolverAdd, etc.)
en xp/2003 pasan (reducidas) a: SolvOK, SolvAdd, etc. les sobra el sufijo ->(solv)ER<-
- (probablemente) la primera vez que lo ejecutes mandara un mensaje de error:
->error inesperado o memoria agotada<- :((
para resolverlo (y SOLO por unica vez) tendras que usar la siguiente instruccion...
->Application.Run "Solver.xla!Auto_Open"<-
- tomar en cuenta IDIOMAS p.e.
para FormulaText:= en castellano binario debe cambiarse por binary (si se correra en un excel en ingles) -?-
- tomar precauciones si se va a correr en hojas protegidas <= OJO

(solo por no dejarlo en el tintero)...

1) ya comprobaste que la herramienta este habilitada desde (menu) herramientas / complementos -?-

2) revisa en (menu) ayuda / acerca de microsoft excel / (boton) elementos deshabilitados...

3) asegurate que la libreria (solver.dll) se encuentre en la misma ubicacion que el complemento (solver.xla)

4) prueba ejecutando el solver por segunda (y/o quizas tercera) ocasion -?-
(incluso cerrando y volviendo a abrir el excel)

(probablemente existan otras soluciones ?)... comentas si algo de lo anterior funciona ?



Respuesta Responder a este mensaje
#5 j_lete
10/03/2009 - 19:54 | Informe spam
Hola!!

Teniendo en cuenta que la macro se tendria que instalar en unos 1000 PC's y
que el nivel de los usuarios (salvo excepciones) es básico, he probado a
introducir en la macro la instrucciín que indicas Application.Run
"Solver.xla!Auto_Open, pero si no tienes marcada la referencia solver.xla no
me ha funcionado. Por tanto vamos a realizar algo mas sencillio y parecido a
buscar objetivo, donde el usuario introduce un valor, y mediante un bucle y
partiendo de un valor maximo, un medio y un minimo, se va buscando el
resultado hasta que la diferencia sea (por ejemplo) de 1 milesima.
Saludos y gracias
"Héctor Miguel" escribió:

hola, !

> El codigo es muy sencillo:
> Sub SOLVER()
> Dim par As Double
> par = InputBox("Introducir T.A.E.")
> SolverReset
> SolverOk SetCell:="$C$13", MaxMinVal:=3, ValueOf:=par, ByChange:="$C$8"
> SolverSolve
> End Sub
> Respecto a la macro, en efecto sera instalada (si consigo solucionar el problema) en bastantes PC's
> todos con la misma version de excel (de momento 2003 puede que en el futuro 2007).

la macro que expones fue creada con la version 97 o 2000 de excel (por el tipo de llamadas a SolverOk, SolverSolve, etc.)

> Para la 2ª opcion mi pregunta era sobre si alguien conoce algun foro/pagina
> que tenga disponible algun codigo que funcione como la funcion solver

para esta segunda parte (sin que pierdas de vista el comentario a la primera)...
toma nota de los siguientes comentarios y... si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

1) es probable que cuando ejecutas la macro sea en una sesion fresca de excel ?
(es decir, cuando NO se ha ejecutado la herramienta del solver desde la interfase de usuario) -?-

2) (hasta donde se)... deberas tomar en cuenta las siguientes observaciones:
para poder usar el solver (por codigo), es necesario que el complemento solver.xla este cargado en la sesion...
para lo cual, tienes -al menos- dos opciones/alternativas/formas/... para cargarlo:
a) usarlo en vivo y a todo color (o sea, desde la interfase de usuario desde el menu herramientas / ... etc.)
b) establecer una referencia (en el proyecto de macros) a la libreria solver.xla (NO solver.dll)
-> buscando la ubicacion apropiada con (menu) (herramientas / referencias <-
(la cual, pudiera variar segun la version -ingles/espa#ol- del sistema operativo)
- hay ligeros cambios entre excel 97/2000 y excel xp/2003 ...
las llamadas (por codigo) a las funciones del solver (como SolverOK, SolverAdd, etc.)
en xp/2003 pasan (reducidas) a: SolvOK, SolvAdd, etc. les sobra el sufijo ->(solv)ER<-
- (probablemente) la primera vez que lo ejecutes mandara un mensaje de error:
->error inesperado o memoria agotada<- :((
para resolverlo (y SOLO por unica vez) tendras que usar la siguiente instruccion...
->Application.Run "Solver.xla!Auto_Open"<-
- tomar en cuenta IDIOMAS p.e.
para FormulaText:= en castellano binario debe cambiarse por binary (si se correra en un excel en ingles) -?-
- tomar precauciones si se va a correr en hojas protegidas <= OJO

(solo por no dejarlo en el tintero)...

1) ya comprobaste que la herramienta este habilitada desde (menu) herramientas / complementos -?-

2) revisa en (menu) ayuda / acerca de microsoft excel / (boton) elementos deshabilitados...

3) asegurate que la libreria (solver.dll) se encuentre en la misma ubicacion que el complemento (solver.xla)

4) prueba ejecutando el solver por segunda (y/o quizas tercera) ocasion -?-
(incluso cerrando y volviendo a abrir el excel)

(probablemente existan otras soluciones ?)... comentas si algo de lo anterior funciona ?



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