La macro podría ser algo así:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
nombre = “Libro-” & Format(Date, “ddmmmyyyy”) & “.xls”
ActiveWorkbook.SaveCopyAs nombre
End Sub
Por tener el nombre especial Workbook_BeforeSave, esta macro se ejecuta automáticamente cada vez que grabamos el archivo. La instrucción SaveCopyAs guarda una copia del archivo actual, con el nombre indicado como argumento. En este caso, el nombre se forma con la palabra Libro, seguida de la fecha en el formato día/mes/año. Por ejemplo: 05May2013. También indicamos la extensión .xls.
La macro guarda la copia del archivo en el directorio por omisión de Excel. Si queremos que lo guarde en otra carpeta, debemos indicarla en el nombre.
El código de la macro no se escribe en un módulo (como ocurre normalmente con las macros), sino en la ventana de código del libro:
1. Tomamos las opciones [Herramientas/Macro/Editor de Visual Basic] para abrir el editor. En Excel 2007/2010 hacemos clic en el botón [Visual Basic] de la ficha [Programador].
2. Una vez dentro del editor, tomamos las opciones [Ver/Explorador de proyectos]. Se abrirá una estructura similar a la del Explorador de archivos de Windows.
3. Dentro del explorador, hacemos clic donde dice ThisWorkbook o EsteLibro.
4. Tomamos las opciones [Ver/Código].
Esto abre una ventana de texto donde debemos escribir el código anterior. Podemos obtener el encabezado de la macro si actuamos sobre las dos listas desplegables que hay en la parte superior de la ventana:* En la lista de la izquierda, elegimos [Workbook].
* En la lista de la derecha, elegimos [BeforeSave].
Esto pone en la ventana la primera y la última línea de la macro. Entre ellas tenemos que poner las instrucciones propiamente dichas.