
Intento crear una plantilla de Excel que tendrá tres campos que me gusta actualizar automáticamente cuando esté abierta.
Campos que tendrá esta plantilla
- Fecha actual: 07/02/2012
- Número de hoja: 25
- Entre fecha: 07/02/2012 al 08/02/2012
Cuando abra esta plantilla después del 08/03/2012 esta hoja tendrá nuevos datos
- Fecha actual: 08/03/2012
- Número de hoja: 26
- Entre Fecha: 08/03/2012 al 09/02/2012
Para la fecha actual
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date
End Sub
¿Se puede hacer esto usando la función de Excel o necesito usar VB y también cómo actualizo la plantilla automáticamente con nuevos valores para decir la próxima vez que use estas fechas?
Respuesta1
Hay varias formas de lograrlo.
La más sencilla supone que las fechas de inicio y finalización son coherentes.
- Las fechas "intermedias" deben estar en dos celdas. La fecha de "inicio" se establece en el día 2 del mes actual
=DATE(YEAR( NOW() ), MONTH( NOW() ), 2)
, la fecha de "fin" en el día 2 del mes actual +1=DATE(YEAR( NOW() ), MONTH( NOW() ) +1, 2)
- La fecha "actual" simplemente se establece en la fecha de "inicio".
Sin embargo, es necesario "arreglar" estas fechas cuando se guarda la hoja de cálculo. Suponiendo que la fecha "actual" está en la celda B3 y las 2 entre fechas están en las celdas. Puedes usar algo como:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("B3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Range("B5:C5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
En el ThisWorkbook
módulo de código. Esto simplemente copia y pega valores en las celdas para que la fórmula sea reemplazada por las fechas.
Vaya, se requiere una adición a esto. El código que he proporcionado es un poco simplista, ya que no podrá guardar la plantilla, por lo que debe envolver el código proporcionado en algo que evite que se active al editar la plantilla. Posiblemente la forma más sencilla sea utilizar una convención de nomenclatura para los archivos. Quizás la plantilla tenga el texto "PLANTILLA " al comienzo del nombre del archivo.