Macros Excel – haciéndolas disponibles para todos los cuadernos

lunes, febrero 05, 2007

Con Excel es relativamente fácil crear macros. Uno de los usos más corrientes es automatizar tareas. No hace falta ser un profesional del Vba (Visual Basic for Applications) para automatizar tareas sencillas con macros.
Así que supongamos que hemos desarrollado una macro para formar la fuente de la selección a negrita (bold) y el fondo de las celdas a gris.
La forma más fácil es utilizar la grabadora de macros.




El resultado es el siguiente



Cambiamos el nombre de la macro a N_gris, y eliminamos la primer línea de la macro, para que podamos aplicarla a cualquier rango que elijamos en la hoja



Sub N_gris()
'
' Macro1 Macro
' Macro grabada el 05/02/2007 por JLD
'

'
Selection.Font.Bold = True
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
End Sub


Para poder usarla con facilidad asociamos una combinación de teclas a la macro (Herramientas—Macros—Opciones)




Ahora tenemos una macro que nos permite aplicar los formatos pulsando Ctrl+Mayúsculas+N a cualquier rango que hayamos seleccionado.

Para usar esta macro en hojas de otros cuadernos podemos:

1 – Abrir el cuaderno donde grabamos la macro. De esta manera estará disponible para todos los cuadernos abiertos en la sesión.

2 – Guardar la macro en el cuaderno Personal.xls. Excel crea este cuaderno automáticamente la primera vez que grabamos una macro en él. Normalmente este cuaderno está oculto, pero las macros que contiene están disponibles en cada sesión de Excel.

Para crear Personal.xls, simplemente grabamos una macro en él (basta con activar la grabadora e inmediatamente terminar la grabación)




Una vez hecho esto, podemos ver en la ventanilla Proyectos el Personal.xls




Copiamos la macro a un módulo de Personal, y la macro estará disponible cada vez que iniciemos una sesión de Excel.


Supongamos ahora que queremos distribuir nuestra macro a otros usuarios. Una posibilidad es darles una copia del cuaderno con la macro. Estos usuarios podrán luego copiar la macro a su propio Personal.

Otra posibilidad, más eficiente, en guardar la macro como complemento (Add in) y guardarlo en una carpeta pública, de donde cada usuario autorizado podrá instalarlo.
Mostraremos esta técnica en la próxima nota.

Technorati Tags:

11 comments:

Anónimo,  20 octubre, 2007 16:55  

Estimado Jorge

Encontre tu pagina buscando ayuda a un problema que se me presento, despues de buscar y no encontrarla en tu blog quisiera que me ayudes con lo sgte. Una macro que busque repetidos en una colimna y de un mensaje de aviso.
Gracias

Jorge L. Dunkelman 23 octubre, 2007 22:02  

Hola
si haces una búsquea en la Internet encontrarás muchas macros que hacen esa tarea.
En mi blog puedes leer la nota Evitando duplicados con Validación de Datos en Excel sobre una solución sin macros.
También puedes usar Formato Condicional para señalar duplicados poniendo un fondo de color en la celda.

Anónimo,  25 marzo, 2008 00:04  

Buenas Jorge antes que todo te felicito por tu pagina excelente, Una pregunta: tengo una serie de datos que cargo en una hoja, como puedo crear un boton que al hacerle un clip, me vaya a una hoja especifica en el mismo libro

Jorge L. Dunkelman 25 marzo, 2008 17:59  

Hola
con Sheets(nombre de la hoja).Activate

Por ejemplo para ir a la Hoja1

Sub ir_a_hoja1()
Sheets("Hoja1").Activate
End Sub

Luego ligas la macro al botón.

Anónimo,  01 diciembre, 2010 14:13  

Pues aquí estoy, usuario anónimo perezoso (eso de loguearse es tan aburrido).

No tengo preguntas que hacer, por que está todo muy bien explicado, así que el objetivo de este mensaje es felicitarte y agradecerte tu trabajo. Ahí va;
¡Felicidades y gracias por tu trabajo!

Siendo como soy un usuario anonimo perezoso, espero entiendas el valor de este, mi mensaje de felicitació y agradecimiento.

Saludos cordiales, y sigue aportando tu grano de arena por el bien del mundo mundial.

MatildaMouse.ar@gmail.com 24 abril, 2012 19:37  

tengo el siguiente problema: quiero controlar la grabacion de un libro, y encontre en la ayuda de excel, el siguiente ejemplo:
En este ejemplo se pide confirmación al usuario antes de guardar el libro.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel as Boolean)
a = MsgBox("Do you really want to save the workbook?", vbYesNo)
If a = vbNo Then Cancel = True
End Sub

Pero aun poniendo la variable "cancel" en true, graba de todas formas.

muchas gracias por la colaboracion.

Jorge L. Dunkelman 25 abril, 2012 07:19  

¿A qué te refieres con "grabar"? La macro (en realidad es un evento que debe ponerse en el módulo de la hoja correspondiente) abre un diálogo cuando el usurario quiere guardar el cuaderno. Ai el usuario aorieta "Yes" Excel guarda el cuaderno; si aprieta "No" se interrumpe le proceso.

Anónimo,  27 febrero, 2013 05:53  

Por favor tu ayuda con el siguiente problema: en el archivo Personal.xlsb grabé algunas funciones en VB que hacen referencia a parámetros que el usuario debe previamente registrar en la hoja "Parámetros" del libro donde requiere utilizar dicha función. Sin embargo, la función hace referencia sólo a la hoja y no al nombre del libro. Luego, supongo que por defecto la función buscara la hoja "Parámetros" en el libro activo o no ???. Necesariamente debo indicar el nombre del libro ???. Si lo anterior fuese necesario, entonces también debo indicar la ruta del libro???

Jorge L. Dunkelman 28 febrero, 2013 07:03  

Hola, supongo que te refieres a una rutina de VB, ya que no se pueden grabar funciones.
De todas maneras, por defecto Excel buscará en el cuaderno activo. Si surge la necesidad de referirse al cuaderno activo puedes usar ActiveWorkbook.

Julio Emanuel Gigena 16 agosto, 2016 19:58  

hola, quisiera saber como repetir una macro con vb cuando no tengo una determinada cantidad de celdas.
Ejemplo: mi macro sería:
Sub Sum()
Range("O7").Value = Range("M7").Value + Range("N7").Value
End Sub

dejaria de repetirse, cuando haya alguna celda en la columna D vacia.

Jorge Dunkelman 17 agosto, 2016 07:37  

Julio, para repetir una acción mientras se cumpla una condición puedes usar Do While...Loop, por ejemplo:

Dim i As Integer
i = 1

Do While i < 6
Cells(i, 1).Value = 20
i = i + 1
Loop

La macro que pones no tiene sentido para el ejemplo, ya que estarías escribiendo el resultado siempre a la misma celda O7.

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP