none
Programacion VBA en Excel 2007 RRS feed

  • Pregunta

  • Estoy empezando a programar en VBA para Excel 2007, y he hecho un procedimiento Sub de prueba que me pregunta al terminar si Estoy seguro de querer salir.

    Lo he realizado en el entorno de VBA en Excel y lo he ejecutado en dicho entorno, funcionando correctamente.Las preguntas son:

    Como grabo el procedimiento en disco para que lo puedan ejecutar otras hojas ?

    Como llamo al procedimiento desde una Hoja ? (Creia que era de la forma =Call Procedimiento())

    Saludos

    lunes, 18 de junio de 2012 21:37

Respuestas

  • Creo entonces que lo mejor es desarrollar un complemento de Microsoft Excel, para lo cual sigue los siguientes pasos:

    1. En Excel crear un Libro nuevo.

    2. Si no tienes la Solapa Programador en la Cinta de opciones, la puedes habilitar en Archivo / Personalizar cinta de opciones / Marcar Programador.

    3. En la Cinta de Opciones, ir a Programador / Macros. 

    4. Escribir el Nombre de la Macro, y presionar el botón Crear. Aquí debes de poder ponerle el nombre que desees.

    5. Escribir la Macro.

    6. Ir a Archivo Guardar como, y seleccionar el tipo Complemento Excel (*.xla). Esto es fundamental, para que Excel no considere este archivo como un Libro sino como un Complemento.

    7. Al Guardar, te va a sugerir copiar el archivo en la siguiente Carpeta (Windows 7 en mi caso y el Usuario Alejandro Garrido): C:\Users\Alejandro Garrido\AppData\Roaming\Microsoft\Complementos.

    8. Cierra Excel y vuelve a entrar.

    9. Ve a Archivo / Opciones, y en la parte de abajo selecciona en Administrar, Complementos de Excel, y presiona el botón Ir.

    10. Te va a aparecer en la lista el Complemento con el Nombre que guardaste el archivo XLA.

    11. Si son Funciones ya te van a quedar habilitadas.

    11. Si son Macros, debes agregar botones en la Cinta de Opciones, para esto ve a Archivo / Opciones / Personalizar Barra de Herramientas, en la derecha crea una nueva Ficha, luego un nuevo Grupo, y luego en la lista de la izquierda selecciona Macros y te mostrará tus Macros, arrástralas a la lista de la derecha para que te agregue los botones.

    12. Sal de Excel y vuelve a entrar, y verás mientras inicia que te va a mostrar que esta cargando los XLA que seleccionaste, y te aparecerán en la Cinta de Opciones los botones.

    Yo lo acabo de hacer con un ejemplo y está funcionando.

    Suerte.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    • Propuesto como respuesta Alejandro Garrido viernes, 22 de junio de 2012 13:45
    • Marcado como respuesta jorge234 viernes, 22 de junio de 2012 16:50
    viernes, 22 de junio de 2012 13:25

Todas las respuestas

  • Hola, lo primero que debes hacer es instalar la planilla que contiene las macros en la carpeta Startup de Excel, para que te la abra al iniciarse Excel y de esa manera tengas las macro disponibles.

    Aquí tienes las instrucciones: http://support.microsoft.com/kb/822107

    Para ejecutar la Macro puedes incluir un botón en la barra de herramientas.

    Saludos.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    martes, 19 de junio de 2012 13:03
  • Gracias Alehjandro por responder,

    Bueno, ya he logrado ejecutar la funcion en la hoja de Excel que tenia pero mi sorpresa ha sido que al ir a guardar la Sub hecha en el Programador de VBA me dice que tengo que cambiar el tipo a .xlsm.Cambio a .xlsm y me llevo otra sorpresa ya que a la hoja de Excel que tenia le ha cambiado el nombre y le ha puesto la de la Sub que he programado.

    Yo lo que queria hacer es programar varias Sub y Funciones, dandoles a cada una su nombre,  que valiesen para muchas hojas, las cuales tendrian otros nombres.

    Como debo de hacerlo, tanto en Excel como en el entorno de Programacion ?

    Gracias anticipadas

    martes, 19 de junio de 2012 17:03
  • Jorge, aquí va un ejemplo de como hacerlo paso a paso:

    1. En Excel crear un Libro nuevo.

    2. Si no tienes la Solapa Programador en la Cinta de opciones, la puedes habilitar en Archivo / Personalizar cinta de opciones / Marcar Programador.

    3. En la Cinta de Opciones, ir a Programador / Macros. 

    4. Escribir el Nombre de la Macro, y presionar el botón Crear.

    5. Escribir la Macro.

    6. Ir a Archivo Guardar como, y seleccionar el tipo Libro de Excel habilitado para Macros (*.xlsm). Esto es fundamental, dado que sólo pueden guardarse macros en este formato y no en xlsx.

    7. Guardar el archivo .xlsm en C:\Archivos de programa\Microsoft Office\Office14\XLSTART. Para que Excel abra automáticamente dicho Libro con la Macro programada.

    8. Cerrar Excel.

    9. Al iniciar nuevamente Excel, ir a Programador / Macros y se mostrará disponible la Macro guardada anteriormente.

    10. Repetir el proceso por cada Macro.

    Saludos.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    martes, 19 de junio de 2012 21:11
  • Gracias Alejandro por tu paciencia y por desmenuzarme lo que tengo que hacer de manera tan detallada,

    He hecho todo tal como dices y efectivamente cuando inicio Excel y solo cuando lo inicio, me aparecen las macros guardadas en XLSTART, pero si yo cierro la hoja y abro nueva hoja, desaparecen y ya no las puedo utilizar.A mi lo que me gustaria es que todas las funciones y Sub's que yo programe, las pueda llamar desde cualquier hoja o proyecto para hacer el trabajo para las que fueron diseñadas.Ademas cuando yo abro Excel, el nombre del proyecto toma el nombre de la ultima Sub o funcion almacenada en XLSTART.

    Mi idea es la misma que en programacion, es decir poder llamar a subroutinas ya hechas desde cualquier nuevo proyecto, y no tener que programar otra vez algunas cosas en el nuevo proyecto.

    Es posible realizar lo que pretendo?

    Saludos

    miércoles, 20 de junio de 2012 15:53
  • Creo entonces que lo mejor es desarrollar un complemento de Microsoft Excel, para lo cual sigue los siguientes pasos:

    1. En Excel crear un Libro nuevo.

    2. Si no tienes la Solapa Programador en la Cinta de opciones, la puedes habilitar en Archivo / Personalizar cinta de opciones / Marcar Programador.

    3. En la Cinta de Opciones, ir a Programador / Macros. 

    4. Escribir el Nombre de la Macro, y presionar el botón Crear. Aquí debes de poder ponerle el nombre que desees.

    5. Escribir la Macro.

    6. Ir a Archivo Guardar como, y seleccionar el tipo Complemento Excel (*.xla). Esto es fundamental, para que Excel no considere este archivo como un Libro sino como un Complemento.

    7. Al Guardar, te va a sugerir copiar el archivo en la siguiente Carpeta (Windows 7 en mi caso y el Usuario Alejandro Garrido): C:\Users\Alejandro Garrido\AppData\Roaming\Microsoft\Complementos.

    8. Cierra Excel y vuelve a entrar.

    9. Ve a Archivo / Opciones, y en la parte de abajo selecciona en Administrar, Complementos de Excel, y presiona el botón Ir.

    10. Te va a aparecer en la lista el Complemento con el Nombre que guardaste el archivo XLA.

    11. Si son Funciones ya te van a quedar habilitadas.

    11. Si son Macros, debes agregar botones en la Cinta de Opciones, para esto ve a Archivo / Opciones / Personalizar Barra de Herramientas, en la derecha crea una nueva Ficha, luego un nuevo Grupo, y luego en la lista de la izquierda selecciona Macros y te mostrará tus Macros, arrástralas a la lista de la derecha para que te agregue los botones.

    12. Sal de Excel y vuelve a entrar, y verás mientras inicia que te va a mostrar que esta cargando los XLA que seleccionaste, y te aparecerán en la Cinta de Opciones los botones.

    Yo lo acabo de hacer con un ejemplo y está funcionando.

    Suerte.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    • Propuesto como respuesta Alejandro Garrido viernes, 22 de junio de 2012 13:45
    • Marcado como respuesta jorge234 viernes, 22 de junio de 2012 16:50
    viernes, 22 de junio de 2012 13:25
  • Gracias Alejandro, esto si funciona como debe de ser.

    Disculpa las molestias.Gracias por tu paciencia.

    Saludos

    viernes, 22 de junio de 2012 16:50