Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Cómo añadir código vba dinamicamente

Estas en el tema de Cómo añadir código vba dinamicamente en el foro de Visual Basic clásico en Foros del Web. Hola a todos, Estoy creando una aplicacion en Excel (2007) y me he encontrado con un problema que no he sido capaz de resolver, y ...
  #1 (permalink)  
Antiguo 17/07/2010, 10:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Cómo añadir código vba dinamicamente

Hola a todos,

Estoy creando una aplicacion en Excel (2007) y me he encontrado con un problema que no he sido capaz de resolver, y tampoco he encontrado información Googleando.

La macro que estoy haciendo crea una nueva hoja cuando se ejecuta, y la rellena cruzando los datos de otras dos tablas. Cuando se termina con la tabla, esta se elimina, pues es bastante grande y hace crecer el tamaño del archivo.

Además, necesito que se ejecutase otra macro al seleccionar las celdas de la hoja creada en tiempo de ejecución (la de la tabla grande), para lo cual añado el siguiente código en el "Excel Object" de el explorador de proyectos de VBA correspondiente con la hoja creada ("HojaTemp")

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
(...)
End Sub

EL PROBLEMA es que cada vez que se borra la hoja, tambien se borra el "Excel Object" correspondiente a la hoja con el código que contiene. De esta forma, al crearse de nuevo la tabla cuando se solicite, no tiene la función de ejecutar la macro al seleccionar celdas, pues se eliminó el código.

Necesitaría una forma de añadir código VBA al objeto "hoja" en tiempo de ejecución o bien encontrar una forma de asociar el código de forma permanente a cualquier hoja llamada "HojaTemp" se elimine o no.

Espero vuestras respuestas.

Saludos y muchas gracias de antemano.

PD: Me parece que me he equivocado de foro. Tal vez estaría mejor en Ofimática, si algún administrador puede cambiarlo de sitio se lo agradecería.
Disculpen las molestias.

Última edición por winweb89; 17/07/2010 a las 10:40
  #2 (permalink)  
Antiguo 17/07/2010, 13:10
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Cómo añadir código vba dinamicamente

No entiendo muy bien lo que necesitas, pero quizá si agregas un módulo y copias la función en él declarándola como pública quizá soluciones tu problema, ya que la podrás llamar desde cualquier otro sitio.

Saludos.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 17/07/2010, 13:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Respuesta: Cómo añadir código vba dinamicamente

El problema es que la función ha de estar en un módulo especial de Excel, el cual se elimina junto con la Hoja de Excel cuando esta es borrada, por lo que me desaperece la función, la declare public, private o como sea.
  #4 (permalink)  
Antiguo 17/07/2010, 15:46
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Cómo añadir código vba dinamicamente

Siento no servir de grán ayuda.

Con lo poco que sé de excel, solo puedo deducir que necesitas escribir código en la sub de un evento de un objeto o de una hoja recién creada, y para eso de momento no se me ocurre una solución, a no ser que se pudiera tener una tabla guardada con el código incuido y que pudieras copiarla con su objeto excel en lugar de crear una nueva tabla cuando empiezas con el tema.
Y ya digo que no sé ni siquiera si es posible hacer algo así, si es que he entendido algo.

Por cierto, creo que sí, que es este el foro donde se tratan estos temas de excel, VBA y tal, aunque no sé que tal se le dá al personal.

De nuevo pido disculpas si solo te hago perder tiempo, y te mando un saludo.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #5 (permalink)  
Antiguo 17/07/2010, 16:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Respuesta: Cómo añadir código vba dinamicamente

No te preocupes, aunque lo que dices de tener una tabla guardada con el código y copiarla en el momento probablemente funcionará. Mañana lo pruebo y te cuento que tal.
  #6 (permalink)  
Antiguo 18/07/2010, 05:59
 
Fecha de Ingreso: mayo-2009
Mensajes: 23
Antigüedad: 15 años
Puntos: 0
Respuesta: Cómo añadir código vba dinamicamente

Pues funciona perfectamente.

La otra opción era conservar la tabla y borrar su contenido cada vez, pero tenía que escribir mucho código para dejarla como recien creada, además era propenso a errores si se modificaban ciertas partes como los botones de la hoja o los anchos de las columnas.

De la forma que me comentas, oculto la hoja que luego copio y así nadie tiene la opción de modificarla accidentalmente. Además se copia el código vba a la nueva hoja, que es lo que quería.

Muchas gracias por tu ayuda
  #7 (permalink)  
Antiguo 18/07/2010, 13:50
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Cómo añadir código vba dinamicamente

Me alegro mucho de haber ayudado.

Que se dé bien.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: añadir, dinamicamente, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:40.