Codigo Vb en ejecucion, se puede??

krizall
15 de Noviembre del 2004
hola, a todos, una pregunta:

se puede ejecutar desde una aplicacion un codigo de visual basic contenido en un textbox???
por ejemplo en un form con un textbox y un command button

ejecuto mi programa y que ponga algo asi en el text box

msgbox "hola"

y al dar click en el boton me ejecute esa instruccion???

o un procedimiento talves:

private sub saludo()
msgbox "hola"
end sub

gracias de antemano, se agradecen todos sus comentarios

eth0
15 de Noviembre del 2004
Hombre, formas de hacerlo las hay.

Eso de poner código VB en un TextBox y ejecutarlo no es posible directamente con VB, pero lo que sí puedes hacer es usar el Microsoft Script Control, que te permite ejecutar no código VB, sino VBScript (que tiene algunas -mínimas- diferencias). Con eso puedes incluso hacer que tus programas sean controlables mediante scripts.

Lo de ejecutar métodos también se puede hacer y no necesitas controles externos para eso, siempre que uses mínimo VB6. En este caso se trataría de llamar a CallByName para ejecutar un método de un objeto, como por ejemplo el formulario mismo. Sería algo como esto:

Private Sub Command1_Click()
CallByName Me, Text1.Text, vbMethod
End Sub

Así se podrá llamar a cualquier método público de la ventana. Puedes pasar parámetros también; el cuarto parámetro es un ParamArray, así que podrías hacer lo siguiente:

CallByName Me, txtComando.Text, vbMethod, txtParam1.Text, txtParam2.Text

También puedes establecer propiedades y obtener valores de retorno de funciones y propiedades.

En Google podrás encontrar un montón de información sobre el Script Control y sobre CallByName.

en?
15 de Noviembre del 2004
hola krizall,

para añadir algún dato a la respuesta de 'eth0', yo también te sugiero que uses el Script Control ya que con él, además de ejecutar una línea de código guardada en un String, puedes crearte módulos y, dentro de ellos, procedimientos "al vuelo".

Para tu caso, después de haber agregado la referencia 'oca' a 'Microsoft Script Control' o el complemento 'ocx' de mismo nombre puedes hacer:

'siendo pScr el nombre del control OCX
Dim Procedimiento
Set Procedimiento = pScr.Modules.Add("Modulo1")
Procedimiento.AddCode "Sub Mensaje : MsgBox ""Hola Mundo"" : End Sub"
pScr.Modules("Modulo1").Run "Mensaje"

o si como comentas, en un TextBox tienes escrito: msgbox "Hola Mundo", puedes hacer directamente:
pScr.ExecuteStatement Text1

____________
Aparte te paso el enlace de una función indocumentada "EbExecuteLine", que pertenece a unas dll implícitas del software VB.
El inconveniente es que las DLLs en las que está incluido no son redistribuibles. Sólo podrás usar la función en una máquina en la que alguna de esas DLLs esté registrada, ya que no podrás instalarla manualmente.

Bueno aquí está el enlace http://www.freevbcode.com/ShowCode.Asp?ID=1901
puedes bajarte un sencillo ejemplo que hay de lo que puedes hacer con ella http://www.freevbcode.com/code/ExecLine.zip


Un saludo.

krizall
15 de Noviembre del 2004
hola, muchas gracias por sus respuestas, ahora mismo voy a provar lo que me sugieren, otra duda, espero alguno de ustedes pueda ayudarme

me gustaria saber si es posible crear un modulo de impresion, y que yo pueda manupular tanto los margenes como posicion de impresio, eso no es complicado con el metodo print, per se puede hacer escribiendolo el modulo en un text y ejecutarlo... o si se puede hacer eso desde vbscript??

de antemano gracias por su ayuda.