Macro Excel que guarde el archivo activo poniéndole el nombre el valor de una celda.

A ver si me podéis echar una mano, busco una macro que guarde el archivo activo con el valor de una determinada celda. Si por ejemplo en la celda D1 hay un 100 que la macro guarde el archivo en el directorio X con el nombre 100. Xlsx o xlsm según corresponda.

2 respuestas

Respuesta
1

Hol.a

No es tan complicado, a secas, guardar un libro activo con un nombre que se obtenga de una celda usando el método "SaveAs" e incluso usando su propiedad "FileFormat" se puede saber su extensión y guardarlo con aquella sin problemas/errores pero mi duda es ¿cómo harías si el libro activo es uno nuevo que aún no tiene extensión? ¿Cómo saber si tiene macros o no? Yo diría que una forma es recorrer todos los módulos y si hay alguna línea se guardara como "*.xlsm" pero realmente no es cosa fácil (y requiere cierto tiempo programarlo) y además si tienes activado "Option Explicit" dará como resultado que sí hay alguna línea y podría generar que se guarde como "*.xlsm" cuando no se necesita. Otra opción es buscar las palabra "Sub" o "Function" y que en ese caso sí guarde como "*.xlsm" pero igualmente programarlo no es tan simple.

¿Comentarios?

Abraham Valencia

Hola Abraham. El libro ya esta creado y es un xlsm tiene alguna macros sencillas, cortar y pegar, ordenar etc. No tiene Option explicit.

Esperando tu ayuda recibe Un saludo de José Segura

Pues entonces es más simple de lo que yo comencé a creer:

ActiveWorkBook.SaveAs "C:\Carpeta\Sub_Carpeta\" & Range("D1").Value & ".xlsm"

Solo asegúrate que en "D1" (o la celda que corresponda) no existan caracteres no permitidos para nombres de archivo. Ah, también cambia la ruta por la tuya.

Abraham Valencia

Abraham Gracias por tu ayuda eres un genio

Saludos de Jose Segura de Almería España

Perdón Abraham. Una pregunta más, cuando se va a guardar y ya existe un archivo con el mismo nombre te a visa de ello, sin embargo también sale un mensaje de error 1004 etc etc que da miedo. ¿Este mensaje se podría evitar?

Coloca esto antes de la instrucción de guardar:

Application.DisplayAlerts = False

Y esto al final:

Application.DisplayAlerts = True

Salu2

Abraham Valencia

Respuesta
1

Esto te puede aportar más

https://www.youtube.com/playlist?list=PLdK9H5dMIfQiz99T-5wsxbEIHpi1s7s6S 

https://www.youtube.com/watch?v=MAonA49rjLk&t=31s&index=9&list=PLdK9H5dMIfQiz99T-5wsxbEIHpi1s7s6S 

Fijate qie en ejemplo en nombte se carga en la variable mybook1

mybook1 = "DayraSolTomy.xlsx"

tu deberias cambiar su nombre por el de la celda asi

mybook1= range("d1")

De esta manera la variable tomara el nombre de la celda d1

visita https://programarexcel.com descarga cientos macros gratis

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas