Estamos muy acostumbrados a trabajar con macros o procedimientos Sub y Function de todo tipo en nuestros libros de trabajo de Excel, y en ocasiones determinadas macros las necesitamos recurrentemente en todos nuestros libros; es en estas ocasiones cuando en lugar de grabar estas macros en nuestro libro lo haremos en el Libro de macros personal (Personal.xlsb).
Debemos recordar que de forma predeterminada, cuando se crea una macro en Excel, la macro sólo funciona en el libro que lo contiene. Esto es lo normal y correcto siempre y cuando no sea necesario utilizar la macro en otros libros diferentes. Sólo las macros que guardamos en el Libro de macros personal estarán disponibles en cualquier libro cada vez que inicie Excel en el mismo equipo.
Al hilo de la cuestión de un comentario explicaré cómo y qué pasos tenemos que realizar para crear nuestro Libro de macros personal, y cómo Guardar macros en él.
Para tener siempre disponibles nuestras macros en Excel, independientemente del libro de trabajo que tengamos abierto, siempre en nuestro PC (eso sí), deberemos trabajar sobre un libro de trabajo 'especial': PERSONAL.XLS para versiones de Excel anteriores a 2007, y PERSONAL.XLSB para Excel 2007 ó 2010.
La siguiente cuestión a plantear es ¿dónde se guarda este libro de macros personal?. Localizarlo es sencillo, ya que podemos obtener la ruta de una manera muy sencilla.
Primero abriremos nuestro Editor de VBA, habilitando la Ventana de inmediato (Ctrl+G), y dentro de esta, escribiremos el siguiente código:
?Application.StartupPath ó print Application.StartupPath
al ejecutar esta instrucción veremos la ruta en cuestión, que dependerá de la versión de Windows con la que trabajemos; en mi caso, sigo trabajando con WindowsXP, asi que será:
C:\Documents and Settings\NombreUsuario\Datos de programa\Microsoft\Excel\XLSTART
para Windows7 o Vista la ruta sería:
C:\Users\NombreUsuario\AppData\Roaming\Microsoft\Excel\XLSTART.
Mencionar que esta carpeta tiene el atributo de oculto, por lo que si quisieramos visualizar su contenido, la manera más sencilla sería copiar la ruta obtenida, tras modificar la característica en el Explrador de Windows Herramientas > Opciones de Carpeta > Ver > Mostrar todos los archivo y carpetas ocultas:
C:\Documents and Settings\NombreUsuario\Datos de programa\Microsoft\Excel\XLSTART
en el explorador de Windows, lo que nos abriría la carpeta directamente, pudiendo acceder al fichero en cuestión: PERSONAL.XLSB.
Para crear por primera vez este Libro de macros personal tendremos que usar el Asistente de grabación de macros y grabar cualquier proceso de prueba, bastaría con Grabar y Detener, nosotros es lo que haremos. Asi que, por ejemplo, desde la Ficha Programador > Código > Grabar Macro:
Fundamental seleccionar en la opción de Guardar macro en: Libro de macros personal.
Tras Aceptar, procedemos a Detener la macro (Ficha Programador > Código > Detener Macro):
Ya tenemos creado nuestro Libro de macros personal. Podemos verlo dentro del Editor de VBA, en el Explorador de Proyectos:
Podremos renombrar este Libro si es nuestro deseo, para ello simplemente seleccionaremos el proyecto, y desde la ventana Propiedades modificaremos la propiedad Name. Yo voy a renombrar el proyecto por 'Excelforo':
Cualquier macro (procedimiento Sub o Function) incluida en alguno de los módulos de este Libro será accesible desde cualquier Libro de trabajo al abrirlo en nuestro equipo.
Veamos un ejemplo con una función llamada 'prueba':
Si abrimos un nuevo Libro y probamos a ejecutar nuestra función =PERSONAL.XLSB!prueba() veríamos:
Debemos recordar que de forma predeterminada, cuando se crea una macro en Excel, la macro sólo funciona en el libro que lo contiene. Esto es lo normal y correcto siempre y cuando no sea necesario utilizar la macro en otros libros diferentes. Sólo las macros que guardamos en el Libro de macros personal estarán disponibles en cualquier libro cada vez que inicie Excel en el mismo equipo.
Al hilo de la cuestión de un comentario explicaré cómo y qué pasos tenemos que realizar para crear nuestro Libro de macros personal, y cómo Guardar macros en él.
...como hago para que la funcion definida se habra desde cualquier libro?... |
Para tener siempre disponibles nuestras macros en Excel, independientemente del libro de trabajo que tengamos abierto, siempre en nuestro PC (eso sí), deberemos trabajar sobre un libro de trabajo 'especial': PERSONAL.XLS para versiones de Excel anteriores a 2007, y PERSONAL.XLSB para Excel 2007 ó 2010.
La siguiente cuestión a plantear es ¿dónde se guarda este libro de macros personal?. Localizarlo es sencillo, ya que podemos obtener la ruta de una manera muy sencilla.
Primero abriremos nuestro Editor de VBA, habilitando la Ventana de inmediato (Ctrl+G), y dentro de esta, escribiremos el siguiente código:
?Application.StartupPath ó print Application.StartupPath
al ejecutar esta instrucción veremos la ruta en cuestión, que dependerá de la versión de Windows con la que trabajemos; en mi caso, sigo trabajando con WindowsXP, asi que será:
C:\Documents and Settings\NombreUsuario\Datos de programa\Microsoft\Excel\XLSTART
para Windows7 o Vista la ruta sería:
C:\Users\NombreUsuario\AppData\Roaming\Microsoft\Excel\XLSTART.
Mencionar que esta carpeta tiene el atributo de oculto, por lo que si quisieramos visualizar su contenido, la manera más sencilla sería copiar la ruta obtenida, tras modificar la característica en el Explrador de Windows Herramientas > Opciones de Carpeta > Ver > Mostrar todos los archivo y carpetas ocultas:
C:\Documents and Settings\NombreUsuario\Datos de programa\Microsoft\Excel\XLSTART
en el explorador de Windows, lo que nos abriría la carpeta directamente, pudiendo acceder al fichero en cuestión: PERSONAL.XLSB.
Para crear por primera vez este Libro de macros personal tendremos que usar el Asistente de grabación de macros y grabar cualquier proceso de prueba, bastaría con Grabar y Detener, nosotros es lo que haremos. Asi que, por ejemplo, desde la Ficha Programador > Código > Grabar Macro:
Fundamental seleccionar en la opción de Guardar macro en: Libro de macros personal.
Tras Aceptar, procedemos a Detener la macro (Ficha Programador > Código > Detener Macro):
Ya tenemos creado nuestro Libro de macros personal. Podemos verlo dentro del Editor de VBA, en el Explorador de Proyectos:
Podremos renombrar este Libro si es nuestro deseo, para ello simplemente seleccionaremos el proyecto, y desde la ventana Propiedades modificaremos la propiedad Name. Yo voy a renombrar el proyecto por 'Excelforo':
Cualquier macro (procedimiento Sub o Function) incluida en alguno de los módulos de este Libro será accesible desde cualquier Libro de trabajo al abrirlo en nuestro equipo.
Veamos un ejemplo con una función llamada 'prueba':
Si abrimos un nuevo Libro y probamos a ejecutar nuestra función =PERSONAL.XLSB!prueba() veríamos:
Saludos ExcelForo
ResponderEliminarBueno la verdad que Excel no deja de sorprenderme, de momento no necesitare este Libro Personal pero en un futuro será una herramienta muy fuerte para mi, una vez más muchas gracias por sus Correos y enseñanzas ExcelForo.
Un Cordial Saludo
Lázaro.
Como puedo quitar o cambiar el nombre de la macro? en el ejemplo anterior tienes que escribir en la celda "=PERSONAL.XLSB!prueba()" cambiarlo para solo escribir "=prueba()"
ResponderEliminarHola, que tal estás?...espero también te encuentres bien.
EliminarDate cuenta que el caso del ejemplo es una Función personalizada VBA añadida al libro de macros personal, por lo que como cualquier otra UDF creada en otro libro diferente al que estamos trabajando tendremos que llamarla así.
Si quieres ejecutarla sólo con =prueba() tendrías que generar la función en el mismo libro de trabajo.
Un cordial saludo
Hola espero estes bien, muy buena explicación. Tengo una pregunta espero me puedas responder.
ResponderEliminarMira soy nuevo en esto de las macros así que no se mucho pero bueno esta es la situación:
Grabe dos macros en el libro personal para macros y las probe en ese archivo donde las hice, (En ese archivo no las guarde, pero ahi las hice) Las macros en ese libro donde las cree funcionan muy bien, pero cuando las ejecuto en otros archivos me sale el error 1004 error en la seleccion de la clase range. ¿Porque sucede eso? Estoy haciendo mal algo?
Cuando lei tu explicación de guardar las macros en el libro personal me parecio excelente, pero desgraciadamente solo las puedo utilizar en un solo libro, aunque las haya guardado en el libro personal de macros.
En fin espero que me puedas ayudar Gracias.
Hola,
Eliminarpodría haber ocurrido que al grabar las macros hicieras referencia a algo (algún objeto) concreto que sólo existía en el fichero desde donde la grabaste la primera vez.. y al intentar ejecutar las macros en otros libros, donde no existe ese objeto, obviamente falle...
Revisa el código grabado, y asegúrate no se hace referencia a ninguna hoja, gráfico, etc.. con un nombre que sólo exista en el fichero original...
Este suele ser el fallo más normal... aunque es difícil decirlo.
Saludos
Gracias por esta informacion me fui util para resolver un problema de macros aqui en mi trabajo en monterrey. Ya se me habia presentado anteriormente y no habia sabido como atenderlo.
ResponderEliminar;-)
Eliminarme alegra te sirviera
Saludos cordiales
Hola buenos días, una pregunta como hago para cambiar un libro personal xlsb a nueavante libro 1? es que no se que hize y desconfigure el programa de Excel 2010 y quisiera que cuando abra el libro diga libro 1,gracias
ResponderEliminarHola,
Eliminarprueba primero borrando el libro de macros personal.xlsb..
por seguridad guarda un backup de dicho archivo.
Saludos
Tengo un libro abierto de Excel que se actualiza cada 3 minutos. pero cuando abro otra hoja Excel se me vincula la macro del libro abierto y no puedo trabajar en dicha hoja. además, si colocada la acción calcular manual en la hoja también se coloca manual en el libro por lo cual no se activa en el tiempo dado para que se actualice. Tengo Excel 2016
ResponderEliminarHola Sebastián,
Eliminarentiendo has lanzado un proceso de bucle temporal para ejecutar un procedimiento/macro.
Es algo que en general no me gusta ya que interfiere en el desarrollo normal del resto de acciones (por los recursos que consume la macro en constante ejecución).
En todo caso, yo probaría en la macro recurrente a especificar en qué Libro y hoja en concreto quieres realizar la acción que tengas descrita.
Slds
Estimado:
ResponderEliminarJunto con saludarlo, le informo que el libro en cuestión saca cada tres minutos información de un servidor del estado de equipos en servicio. Te envió macro
Private Sub Workbook_Open()
MsgBox "Se aplico Macro, se actualizará cada 3 minuto en forma automática"
Worksheets("EVAS").Range("A1").Value = Time
Worksheets("Situación Actual").Range("A1").Value = Time
Worksheets("EVAS-3").Range("A1").Value = Time
Application.OnTime Now + TimeValue("00:03:00"), "ActualizaHora"
End Sub
Sub ActualizaHora()
Range("A1").Value = Time
DisparaActualizador
End Sub
Sub DisparaActualizador()
Application.OnTime Now + TimeValue("00:03:00"), "ActualizaHora"
End Sub
En sí los procedimientos son correctos...
Eliminares el problema de los bucles temporales, y tener activo un procedimiento constantemente.
Lo siento, poco se puede hacer.
Saludos
Ante todo felicitarle por compartir sus conocimientos desinteresadamente para con nosotros los que iniciamos en el mundo de las macros!! Estoy armando unas plantillas con lo que trabajo a diario y tengo una base de datos de clientes con su respectiva informacion fiscal y quería saber si puedo grabar esta base de datos en el libro de macros personal para tener esa base para poder consultarla (ya sea con fórmulas ó código VBA) con cualquier libro que trabaje en excel. Agradecido de antemano y saludos desde Venezuela!!!!
ResponderEliminarHola Pedro,
Eliminares cierto que en el fondo, el libro PERSONAL.XLSB es un libro de Excel 'normal', y en el que efectivamente podrías guardar esa base de datos... pero funcionaría exactamente igual a la hora de recuperar datos de él, esto es, tendrías que abrirlo como cualquier otro.
Con sinceridad no me parece una buena práctica... me parece mejor incorporar ese base de datos en un libro 'normal' y acceder a él a través de vínculos, macros etc.
Un cordial saludo y gracias!!
DISCULPE MIRE TENGO LA SIGUEINTE SITUACION, TENGO QUE GRABAR UNA MACRO PARA FILTRAR Y CONSOLIDAR UNOS DATOS, PERO EL ARCHIVO DE DONDE EXTRAIGO LA INFORMACION ES UN ARCHIVO QUE DESCARGO DE UNA PLATAFORMA QYE TENEMOS Y CONSTANTEMENTE ESTAN CAMBIANDO LOS DATOS, POR LO QUE SOLO PUEDO VER DE MANERA TEMPORAL LA INFORMACION Y EJUCATAR LA MACRO UNA SOLA VEZ YA QUE CUANDO VUELVO A DESCARGAR EL ARCHIVO E INTENTO EJECUTAR LA MACRO ME MARCA ERROR, QUE PODRIA HACER PARA HACERLA FUNCIONAR CON UN ARCHIVO QUE TENGO QUE DESCARGAR CONSTANTEMENTE SALUDOS
ResponderEliminarHola,
Eliminarquizá lo más simple sea realizar una conexión de datos hacia un fichero (el descargado) que siempre se descargue con el mismo Nombre y misma Ubicación.. asi tendrás en tu plantilla una vista de esos datos volcados... sin necesidad de macros.
Si optas por las macros, podrías emplear lo expuesto aquí:
http://excelforo.blogspot.com.es/2013/10/vba-el-metodo-getopenfilename-para.html
para seleccionar la ubicación del archivo cada vez...
Espero te oriente
Saludos
intento grabar en esta carpeta pero me sale un comentario que dice: el libro de macros personal en la carpeta de inicio debe estar abierto para grabar...y no me deja como puedo abrirlo?
ResponderEliminarHola que tal?
EliminarEl libro de macros personal es un libro 'normal', puedes abrirlo sin problemas como cualquier otro libro.
Búscalo con las rutas que se indican en el post, ábrelo
Saludos
Buenas Tardes.. Al guardar las macros en el libro de macros personal hace que esten disponibles en cualquier libro nuevo que cree.
ResponderEliminarMi pregunta es la siguiente:
Hay forma de que esas macros se puedan habilitar en los archivos que ya tengo creados en la pc, archivos viejos?
Gracias!
Hola Adriana,
Eliminarlas macros guardadas en personal deben estar visibles desde cualquier libro que abras en tu equipo...
a veces pasa que hay que abrir el Libro de macros personal para tenerlas visibles.
Slds
Hola, por favor quiero saber si está activa la ayuda.
ResponderEliminarGracias
Es para lo siguiente:
ResponderEliminarTengo un libro con macros en Excel que cuando lo abro imposibilita insertar columnas o filas en otro libro sin macros que tengo abierto o cualquier otro libro de excel nuevo.
De otra manera: lo que sucede es que debo insertar filas y columnas en el mismo libro, y no sólo Excel no lo ejecuta, sino que no me deja insertar filas y columnas en el .
Hola
Eliminarhabría que ver cómo tienes dispuesta la macro...
pero probablemente tengas que concretar más en qué libro permites trabajar y en cuáles no.
Slds
Saludos amigo, es posible cambiar de ubicación el libro PERSONAL.XLSB (por ejemplo si quiero cambiarlo a una carpeta que se me sincronice con la nube).
ResponderEliminarHola, no podría asegurarlo al 100%
EliminarPero es bien cierto que es un fichero 'normal' que puedes abrir y copiar y pegar, por lo que sí podrías situar en cualquier lugar, y poder abrirlo cuando lo necesites.
No he probado nunca pero en principio si parece posible
Slds
Saludos nuevamente. La idea sería forzar a que Excel abra automaticamente PERSONAL.XSLB en su nueva ubicación y no desde la ruta predeterminada (C:\Users\NombreUsuario\AppData\Roaming\Microsoft\Excel\XLSTART. o según corresponda a la versión del OS).
EliminarHola Nuevamente!: Su blog es genial!!!, he aprendido mucho !!!!
ResponderEliminarUtilizo userforms alojados en Personal.xlsb y los llamo desde otros libros pero a través de una macro alojada en personal...no hay otro modo directo de llamar al userform directamente desde personal? No encuentro nada al respecto...Mil gracias!!!!
Hola
Eliminarmuchas gracias ;-)
En principio no sería posible.. al fin y al cabo, estamos hablando de libros distintos.
Quizá te interese más crearte un complemento con tus macros y userform y así poder abrirlos de igual forma desde cualquier libro...
Saludos cordiales
Entiendo, es que mis libros usan las mismas macros y userforms..... pero que interesante, no se me había ocurrido!!, voy a chequear...Mil gracias!!!
EliminarMe resulto muy útil ...solo hay que cambiar print por msgbox para que te de la ubicación ...me salia un error con print en excel 2016 ...gracias ..saludos
ResponderEliminar;-)
Eliminargracias!!
Buenas.
ResponderEliminar1. Tengo un LIBRO1 que tiene macros y hace llamadas a otras macros generales que las tengo en el libro PERSONAL.XLSB. La llamada es normal de esta forma Call MacrodePersonal (Parámetro1). Esto me da un error que dice NO SE HA DEFINIDO SUB O FUNTION..
2. Cambié la llamada así: Application.Run "PERSONAL.XLSB! MacrodePersonal (Parámetro1)" y me da este otro error: NO SE PUEDE EJECUTAR LA MACRO PERSONAL.XLSB! MacrodePersonal. Puede que la macro no esté disponible en este libro o que se hayan deshabilitado todas las macros.
3. Me di cuenta que si llamo a la macro con usando Application.Run, pero si esta macro NO tiene parámetros entonces sí funciona. ¿Cómo se hace?
Agradezco la ayuda.
Hola,
Eliminaryo intentaría:
Application.Run "'PERSONAL.XLSB'!MacrodePersonal", "Parámetro1"
debería funcionar
Saludos
Ok, gracias
ResponderEliminarTengo otro problema al usar el PERSONAL.XLSB. Resulta que abro el libre y por supuesto el PERSONAL.XLSB entra a funcional. Si pongo esta instruccion "ThisWorkbook.Path" me retorna la ruta del PERSONAL y no la del Libro de trabajo. Alguien sabe como obtener la ruta del libro de trabajo cuando estoy usando el PERSONAL
ResponderEliminarDisculpas ya se resolvió es: ActiveWorkbook.Name
ResponderEliminar;-)
EliminarSaludos
Hola buenas noches, tengo la siguiebte situación. Trabaje una hoja de excel con macros. Pero cuando fui a guardar guarde el archivo como libro de excel, y no como libro de Excel habilitado para macros. Cuando abri de nuevo el archivo ninguno de los botones programados funcionaba, y tampoco esta la programacion. Que puedo hacer?
ResponderEliminarHola Daniela
Eliminarpues lamentablemente nada se puede hacer... tendrás que empezar desde cero y tener la precaución, antes de nada, de guardar el libro como .xlsm
Saludos cordiales
Hola... expongo la siguiente situación en particular.
ResponderEliminarAl crear el libro personal para macros (.XLSB), guardo proyecto... y al momento de cerrar la aplicación Excel me cierra primero el libro e intento de cerrar nuevamente y por fin cierra del todo Excel... ¿Por qué ocurre eso?, ¿es normal?...
saludos!!! :)
Hola Francisco
Eliminarpiensa que tienes DOS libros abiertos... al fin y al cabo el Personal.xlsb es un libro de Excel binario....
Saludos
Entiendo!!! :D
ResponderEliminarMuchas gracias por tu respuesta, Ismael
Saludos!!
hola como estas?? intento grabar en esta carpeta pero me sale un comentario que dice: el libro de macros personal en la carpeta de inicio debe estar abierto para grabar...y no me deja hacer nada, como puedo crear nuevamente esa carpeta o archivo?? ya que solo puedo guardar macros en los libros
ResponderEliminarHola!
EliminarSi no existe el libro PERSONAL.xlsb en la ubicación que corresponda, al tratar de guardar una macro en ese libro personal, Excel lo generará y lo abrirá automáticamente
Saludos
no me lo permite, solo me deja guardar macros en los mismos libros, al guardar en mi libro de macro personal me arroja error...... que mas se puede hacer????
EliminarHola
Eliminarasegúrate que la ruta es la correcta... si aún así falla, abre un libro normal .xslx y guárdalo como binario (.xlsb) con el nombre personal y muévelo donde corresponda (en la ubicación que le toque)...
saludos
hola:
ResponderEliminartengo un libro personal de macros guardado y cada vez que lo abro, lo abre con un numero añadido al nombre de la excel, es decir se llama Calendario.xltm y cuando lo abro se llama Calendario1.xltm. A que se debe?