sábado, diciembre 13, 2008

Activar una macro desde la barra de acceso rápido en Excel 2007

En Excel existen varios métodos para activar una macro. Podemos asignarle una combinación de teclas, podemos ligar la macro a un objeto y en las versiones anteriores a Excel 2007 podíamos ligarlo a un icono en alguna barra de herramientas (o crear una barra de herramientas con el icono) e inclusive incluirla en un menú.

En Excel 2007 podemos, como en las versiones anteriores, ligarla la macro a objetos o asignarle una combinación de teclas. Pero no tenemos barras de herramientas donde poner el icono o menús donde incluir la macro.

Sin embargo tenemos la alternativa de poner un icono ligado a la macro en la barra de acceso rápido.

Supongamos que queremos poner un icono para correr una macro que agrega hojas a un cuaderno a partir de los valores de una lista. Los pasos son los siguientes (la macro tiene que estar en un cuaderno abierto o en Personal .xls):

1 – abrimos el menú de Opciones de Excel – Personalizar (o apretando la flecha en el extremo derecho de la barra de acceso rápido). En la ventanilla ”Comandos disponibles en” elegimos Macros




2 – En la ventanilla inferior veremos una lista de macros disponibles, ordenadas alfabéticamente



En caso de no ver el nombre completo, podemos apuntar con el señalador del mouse y después de unos instantes veremos el nombre completo de la macro. Seleccionamos la macro y apretamos el botón “Agregar”



3 – Para cambiar el icono que Excel pone por defecto seleccionamos la macro que acabamos de agregar y apretamos el botón “Modificar”



Elegimos un icono adecuado. En la ventanilla “Nombre para mostrar” cambiamos el texto que Excel a puesto por defecto (el nombre de la macro) por un texto descriptivo. Finalmente apretamos el botón “Aceptar”.

Excel agrega el icono a la barra de acceso rápido y al apuntar con el señalador del mouse podemos ver la descripción de la acción que ejecuta la macro.



Si tenemos una varias macros que usamos con frecuencia, podemos agregarlas a la barra de acceso rápido con facilidad.


Technorati Tags:

29 comentarios:

  1. Oye tenia un detalle a querer generar un icono con este nuuevo oficce, pero gracias por tu aporte salio.

    Gracias y Excelente aporte .

    ResponderBorrar
  2. Hola Jorge
    Todo bien, pero nose que hago mal, donde se encuentra generalmente el libro personal.xls en office 2007?, para poder correr la macro cuando uno guste, nose que estoy haciendo mal, pero no me funciona, probe de varias formas (en un libro abierto me funciona bien), pero quiero usarla ya por defecto!

    La macro esta excelente...

    Gracias

    ResponderBorrar
  3. Hola Gerson
    fijate en esta nota donde explico como encontrar donde está guardado el Personal.xlsb

    ResponderBorrar
  4. Hola Jorge,

    Lo primero, gracias por este magnífico Blog que tanto nos está ayudando a los que estamos empezando a descubrir un poco más en serio el Excel.

    Mi pregunta es si sería posible asignar a la macro un icono personalizado, en mi caso el logo de una empresa.

    Muchas gracias de antemano y un saludo.

    ResponderBorrar
  5. Susana,
    gracias por los conceptos. En cuanto a tu consulta, en principio si es posible, pero qué versión de Excel estás usando (supongo que 2007, pero pregunto por las dudas) y dónde tiene que estar ubicado el icono?

    ResponderBorrar
  6. Hola Jorge,

    Gracias por contestar tan rápido. Uso Excel 2007, y el icono puede estar ubicado en la barra de acceso rápido. La idea es poder poner a funcionar una macro con cualquier libro de Excel, pero sólo cuando el usuario quiera (por eso no lo hago a través de un formulario que se inicie al abrir el libro), así que creo que lo mejor es ponerlo en dicha barra, aunque admito ideas (acabo de empezar en esto así que aún no se bien de qué opciones dispongo).

    Muchas gracias por la ayuda, un saludo.

    ResponderBorrar
  7. Susana, de momento que una macro está ligado a un icono, ésta correrá solamente cuando el usuario apriete el icono. Una macro que esté disponible para cualquier libro Excel tiene que estar guardada en el el Personal.xlsb (o Personal.xls, si trabajamos con versiones anteriores a XL2007)

    ResponderBorrar
  8. Hola Jorge,

    Gracias de nuevo por contestar. Entonces, en cuanto a la pregunta inicial de asignar un icono personalizado a la macro, ¿cómo se podría conseguir?

    Un saludo

    ResponderBorrar
  9. Hola Jorge,

    Me han comentado que para poder asignar un icono personal (y no de los que ofrece Excel) a una macro para conseguir un acceso directo en la barra de acceso rápido, tendría que programar una subrutina relacionada con scripts. ¿No hay alguna otra forma más sencilla de conseguirlo?

    Un saludo

    ResponderBorrar
  10. Hola Susana,
    no conozco ningún otro método fuera del que mencionás.

    ResponderBorrar
  11. Gracias igualmente Jorge, habrá que ponerse manos a la obra entonces.

    ResponderBorrar
  12. Mil gracias, me has hecho el dia : )=

    ResponderBorrar
  13. Hola
    tengo una macro que ejecuto desde VFP9, al correrla en office 2007 en ingles funciona correctamente, pero cuando se ejecuta en una maquina que tiene office 2007 en español no reconoce algunos comandos, por ejemplo cuando voy a crear una tabla dinamica.

    En ingles los comandos que uso son:
    lo_excel.ActiveWorkbook.PivotCaches.Create(1,"cxp!R1C1:R"+ALLTRIM(STR(XSON))+"C27",1).CreatePivotTable("sheet1!R3C1","PivotTable1",1)

    Lo cambio todo en español y no me funciona:
    lo_excel.ActiveWorkbook.PivotCaches.Create(1,"cxp!F1C1:F148C27",1).CreatePivotTable.sheets(1).("Hoja1!F3C1","Tabla dinámica1",1)

    Un amigo me dijo que tengo que utilizar el comando Sheet y entre parentesis el (1), ya lo hice pero no funciona o no se como hacer para que funciones. Alguien Pilas que me pueda ayudar

    Saludos

    ResponderBorrar
  14. No creo que haga falta agregar Sheets(1), pero me parece que tienes que dejar"sheets1!..." y no cambiarla a "Hoja1!..."
    Sheets(1) se refiere a la primer hoja en la colección. Al mover las hojas en el cuaderno, el índice cambia. Por eso no puedes fiarte del número de índice de la hoja.

    ResponderBorrar
  15. Recuerdo que en Excel 2003 si asignabas una macro a un botón de la barra de herramientas contenida en un fichero x, cuando clicabas en el abría el fichero u ejecutaba la macro.

    He realizado los pasos que aquí comentas, pero solo ejecuta la macro si el libro esta abierto, hay alguna manera de que ejecute la macro sin tener que guardarla en el libro de macros personal?

    Gracias

    ResponderBorrar
  16. El comportamiento es el mismo en Excel 2007: si asignamos una macro a un objeto (botón, forma, icono, etc), al activar el objeto Excel abre el cuaderno que contiene el código y corre la macro.
    Debes tener algún otro problema.

    ResponderBorrar
  17. Hola jorge al cambiar el icono por defaul, solo tenemos los que nos muestra por default o hay alguna forma de incluir los propios gracias

    ResponderBorrar
  18. No, sólo se puede cambiar por los que aparecen en la lista.

    ResponderBorrar
  19. Hola Yashve,

    Lo que sucede es que no estas guardando la macro en Plantillas de Excel Habilitadas para Macros, y es por eso que forzosamente tienes que abrir el archivo que contiene la macro.

    Espero haya servido de algo.

    Saludos!!!

    Will

    ResponderBorrar
  20. mil gracias.

    Como siempre son excelentes tus explicaciones.

    Llevo mas de un mes consultando ingenieros de sistemas para que me dieramn esta solución y ninguno había podido darme esta solución tan sencilla.

    ResponderBorrar
  21. Te pasaste... llevaba meses buscando una solución a este problema y tu en unos pocos pasos lo lograste. Muchas gracias por tu dedicación y tu tiempo.

    ResponderBorrar
  22. Hola Jorge. perdon por hacer una pregunta que no esta referida a este blog, pero no encontre otro que hiciera referencia a mi consulta.
    Quisiera saber si es posible ejecutar una subrutina diferente en base al contenido de una variable que contenga el nombre de la misma; algo asi como "Call (nomsub)", donde la variable nomsub tuviera el nombre de la subrutina a ejecutar.
    Desde ya te agradezco tu inapreciable y permanente aporte.
    abrazo.

    ResponderBorrar
  23. Hola de nuevo. tengo otra consulta por lo que vuelvo a aprovechar este mismo blog.
    Existe alguna funcion o procedimiento que permita conocer el nombre del rango de celdas a al que pertence una celda? de entrada pense que podia existir, pero luego, al darme cuenta que una celda puede pertenecer a mas de un nombre de rango de celdas me parece que no hay forma.
    Gracias de nuevo.
    slds.

    ResponderBorrar
  24. José, efectivamente, la consulta no está relacionada con el tema de la nota. Te sugiero que busques en foros de Vba donde recibirás mucha ayuda. En situacione similares a la que describes suelo usar Select Case, pero no es exactamente lo que estás buscando.

    ResponderBorrar
  25. EN cuanto a los nobres, una forma de visualizarlos es reducir el nivel del zoom en la hoja al 35%. Al hacerlo los nombres aparecen enmarcados en los rangos.

    ResponderBorrar
  26. Tengo varias macros en un libro pero cuando intento asociarlas a un icono (en la barra de acceso rapido) para que solo aparezca en este libro, desaparecen algunas. Si pongo en el desplegable que es para todos los documentos si me deja. Sabes porque ocurre esto?

    ResponderBorrar
  27. No, tendría que ver el archivo (fijate en el enlace Ayuda, en la parte superior del blog). De todas maneras, a un icono sólo puedes asociar una macro. ¿A qué desplegabkle te refieres?

    ResponderBorrar
  28. Hola, como hago para ponerle un icono creado por mi a la macro? en el office 2003 podía facilmente

    ResponderBorrar
  29. La funcionalidad de las barras personalizadas ya no existe a partir de la version 2007. Además de la técnica que muestro en esta nota podés usar esta otra tecnica.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.