Guardar vía macro con nombre=hora del sistema

Necesito de vuestra inestimable ayuda. Tengo un fichero el cual, a la hora de documentarse una serie de celda, pretendo que, via macro, se haga:

- Guardar el fichero con un nombre y dentro de este nombre, se forme con la hora del sistema (hhmmss).

- Cierre el fichero generado de manera automática via macro y vuelva a abrir el fichero con los datos que tenia antes de la modificación de la macro.

1 Respuesta

Respuesta
1

Para redactar la macro se necesitan algunos datos con precisión:

- Versión Excel (x el tema de la extensi´n)

- Cuál es el nombre o de dónde se lo toma o si se trata del mismo nombre

-Si se guardará en la misma carpeta que el libro activo o en otra, y en ese caso dónde se indica esa información (en la misma macro o se toma de alguna celda).

Quedo a la espera de tus aclaraciones para continuar.

Buenos días.

Te contesto tus preguntas.

- Office 2007 SP3

- El nombre del fichero original es DEUSTO.xlsx y del fichero final DEUSTO-hhmmss.csv

- Se guarda en la misma carpeta que el libro activo

Gracias.

Bien, ¿veo qué se tiene que guardar como .csv y no como excel?

Entrá al Editor de macros (con Alt y F11), insertá un módulo y allí copiá esto:

Sub guardar_con_fecha()
'x Elsamatilde
'guarda el libro con otro nombre y extensión en la misma carpeta
Dim nbre As String
Dim librox As String
nbre = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
librox = nbre & "-" & Format(Now, "hhmmss") & ".csv"
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & librox
End Sub

Al nombre le quito la extensión porque ahora es xlsx pero con la macro tendrás que guardarlo como 'xlsm'. Y además porque la extensión no irá en el nombre del nuevo libro.

La instrucción SaveCopyAs guarda una copia pero no se sale del libro actual, por lo que no hace falta volverlo a llamar.

Buenas tardes, Elsa.

Creo que faltaría el paso 2 del mail inicial:

- Cierre el fichero generado de manera automática via macro y vuelva a abrir el fichero con los datos que tenia antes de la modificación de la macro.

Añadiendo tu macro (gracias) a lo que ya tenia hecho, falta cerrar el .csv resultante y dejar el .xlsx original sin modificación alguna.

Gracias de nuevo.

Con la instrucción SaveCopyAs ya el libro se guarda y no queda abierto. Para cerrar el libro activo solo faltaría agregar esta línea antes del End Sub:

ActiveWorkbook.Close False

Pero claro, al cerrar el libro se termina la macro y no puede volver a abrirlo.

Entonces, para ese caso necesitas una macro diferente :

Sub guardar_cerrar()
'x Elsamatilde
'guarda el libro con otro nombre y extensión en la misma carpeta
Dim nbre As String
Dim librox As String, libro1 As String
'guardo el nombre del libro activo para volverlo a abrir
libro1 = ActiveWorkbook.Name
'preparo el nombre para la copia
nbre = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
librox = nbre & "-" & Format(Now, "hhmmss") & ".csv"
'guardo el libro con el nuevo nombre
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & librox
'abro el anterior y pasa a ser el libro activo
Workbooks.Open ThisWorkbook.Path & "\" & libro1
'cierro la copia
Workbooks(librox).Close True
End Sub

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas