Codigo Vb en ejecucion, se puede??
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
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
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.
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.
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.
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.
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.
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.
