También vimos como hacer que las macros que desarrollamos estén disponibles en toda sesión de Excel, guardándolas en el cuaderno Personal.xls.
Si queremos distribuir nuestra macro a otros usuarios podemos, simplemente, darles una copia del cuaderno que contiene la macro.
Una forma más eficiente de hacerlo es guardando el cuaderno como Complemento (Add-in). Los complementos son cuadernos "invisibles", con extensión ".xla", que agregan a Excel cierta funcionalidad. En nuestro caso, la macro que desarrollamos.
Los complementos no se abren, como los cuadernos regulares de Excel (.xls), sino que se instalan con el menú Herramientas—Complementos. Más adelante mostraremos cómo hacerlo.
Otro detalle importante es que las macros contenidas en cuadernos de tipo complementos, no son visibles con el menú Herramientas—Macros. Debido a esto, debemos incluir en el complemento un método para activar la macro.
En esta nota mostraremos como agregar una barra de herramientas con un botón que activa la macro cada vez que instalamos el complemento.
Una vez desarrollada la macro, y después de comprobar que funciona, guardamos el cuaderno como Complemento con el menú Archivo—Guardar como
Excel propone la carpeta Addins de Office (su ubicación depende la versión de Office). No es obligatorio guardarlo en esa carpeta.
El próximo paso es pasar al editor de Visual Basic (Alt+F11). En la ventanilla de proyectos ubicamos el complemento (N_Gris.xla en nuestro caso) y volvemos visibles los objetos pulsando la señal "+"
Seleccionamos el objeto ThisWorkbook de N_Gris.xla. En la ventanilla de las propiedades del objeto, cambiamos la propiedad de IsAddin de False a True.
Al hacer esto, el cuaderno que contiene la macro (la instancia .xls del complemento) se vuelve "invisible".
Ahora guardamos el proyecto con el menú Archivo—Guardar del editor de Vba.
El siguiente paso es agregar un método para activar la macro. Existen varias posibilidades. En esta nota mostraremos como agregar una barra de herramientas. En una próxima nota veremos como agregar un item en la barra del menú de Excel.
En la ventanilla de Proyectos del editor de Vba, hacemos un doble clic al objeto ThisWorkBook. Esto provoca que se abra un módulo especial al que podemos agregar eventos al objeto. Eventos son macros especiales que se activan cuando ocurre algo en particular (algún evento, de allí el nombre) relacionado con el objeto.
En la ventana del editor de Vba, vamos a la ventanilla donde aparece la palabra "General" y elegimos "Workbook"
Al hacerlo Excel agrega al módulo el evento Workbook_Open. Este evento activa la macro que crea la barra con el botón, cada vez que instalemos el complemento.
De la misma manera, necesitamos una rutina que borre la barra de herramientas cada vez que desinstalemos el complemento. Esto lo hacemos con un evento BeforeClose
Las rutinas son las siguientes:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Call cerrar_barra
End Sub
Private Sub Workbook_Open()
     Call crear_barra
End Sub
Como se ve, son dos rutinas muy sencillas. Cada una llama a otra rutina que crea o borra la barra.
Las rutinas para crear y borrar la barra de herramientas las escribimos en un módulo normal de Vba. Creamos un nuevo módulo y por, comodidad y claridad, le cambiamos el nombre a "Barra"
También hemos cambiado el nombre del módulo que contiene la macro a "Aplicación". Esto se hace seleccionando el módulo y cambiando el valor de la propiedad Name.
En el módulo "Barra" escribimos las rutinas que aparecen en los eventos de ThisWorkBook:
Sub crear_barra()
      Dim Boton As CommandBarButton
      CommandBars.Add(Name:="N_gris").Visible = True
      Set Boton = CommandBars("N_Gris").Controls.Add _(Type:=msoControlButton)
      With Boton
            .Caption = "Aplicar negrita y fondo gris"
            .FaceId = 200
            .OnAction = "N_gris"
      End With
End Sub
Sub cerrar_barra()
      On Error Resume Next
      CommandBars("N_Gris").Delete
End Sub
Guardamos nuevamente el complemento usando el menú Archivo—Guardar del editor de Vba.
Para instalar el complemento usamos el menú Herramientas—Complementos de Excel
Apretamos el botón Examinar y vamos a la carpeta dónde hemos guardado el complemento (el icono de los complementos es distinto del de los archivos Excel comunes).
Apretamos Aceptar y nos aseguramos que el complemento este marcado con una "V"
Apretamos "Aceptar" y la barra de herramientas aparecerá sobre el cuaderno Excel. Para desinstalar el complemento quitamos la señal "V" en el diálogo Complementos del menú Herramientas.
Para agregar el comentario que aparece en la parte inferior del diálogo, tenemos que cambiar la propiedad IsAddin del complemento a False, para hacerlo visible. Luego en el menú Archivo—Propiedades, vamos a la pestaña Resumen y agregamos el comentario
Luego, volvemos al editor de Vba y cambiamos la propiedad IsAddin de ThisWorkbook a True, y, naturalmente, guardamos el proyecto.
Para distribuir el complemento podemos mandar el archivo con instrucciones de cómo instalarlo. También podemos ubicarlo en un carpeta accesible a los otros usuarios, que podrán instalar el complemento guardado allí.
La ventaja de este sistema consiste en que nos permite actualizar las macros del complemento fácilmente (no es necesario mandar nuevas copias a los usuarios).
Technorati Tags: MS Excel
Excelente!
ResponderBorrarEstaba buscando la manera de hacer visible un conjunto de macros que había creado para cualquier libro y esto me soluciona el problema.
Gracias.
Me he pasado al Excel 2007 y tengo problemas con las macros que utilizaba en el Excel 2000. Por ejemplo:
ResponderBorrarPrivate Sub Worksheet_Calculate()
Select Case [A3].Value
Case 1
Rows("16:19").Hidden = True
Case 2
Rows("16:19").Hidden = False
End Select
End Sub
Yo utilizaba este evento para ocultar algunas filas pero en Excel 2007 me dice que hay un error de compilación y no logro detectarlo. Si puedes hecharme una mano te lo agradecería.
Hola
ResponderBorrarlamentablemente no te puedo ayudar. Por ahora no respondo a consultas relacionadas con XL2007.
Pero te recomiendo consultes alguno de los foros, como el Exceluciones, por ejemplo.
Hola
ResponderBorrarYo tengo un problema al querer abrir mi archivo .xla , el cual dice que hay un "error 5 de argumento o llamada a prodedimiento no valida".
Y el supuesto error se encuentra supuesto error se encuentra en este codigo:
CommandBars.Add(Name:="open_ejemplo").Visible = True
Tuve la duda en el ejemplo que pusistes, cuando distes el codigo del modulo "Barra" ya que no logro ver q objetos son los nombre q mencionan "N_gris" y "N_Gris" quisiera q me pudieras aclarar estos detalles.
En mi caso el modulo de Aplicacion se inicia con el proceso "sub open_ejemplo()", en nombre de mi archivo es "vinculartransponer.xla"
DE ANTE MANO MUCHAS GRACIAS
P.D: cuando finalizo el error de compilacion. Y abro alguna libro para utilizarlo si me funciona el macro. Pero como le digo genera este error al correrlo.
Pareciera ser que el bojeto que quieres volver visible no existe. Si quieres, puedes mandarme el archivo para revisarlo.
ResponderBorrarGracias este metodo me a servido bastante pero una duda como puedo cambiar el tipo de boton que aparece en la barra...
ResponderBorrarSupongo que te refieres a la imagen del botón. En el código que crea la barra, puedes cambiar el valor de FaceId, 200 en el ejemplo, a otro valor. Por ejemplo, si quieres que la imagen del botón sea una llave, puedes usar el número 264.
ResponderBorrarEXCEL 2003
ResponderBorrarPara llegar a la ruta de ADDINS podrias ir a INICIO -> EJECUTAR -> %homepath%\Datos de programa\Microsoft\addins
EXCEL 200
Para llegar a la ruta de ADDINS podrias ir a INICIO -> EJECUTAR -> %homepath%\Datos de programa\Microsoft\complementos