Macro autoejecutable con fecha

Matilde,
Hice una macro ejecutable con fecha para dar "caducidad" a mis libros, la macro de auto_open funciona bien, solo que al abrir el libro sin habilitar macros si se puede hacer, por lo que quiero hacer una macro que oculte algunas hojas del libro si no se abre el libro habilitando las macros.
Te pongo la sintaxis a ver si puedes ayudarme. Gracias
Sub Auto_open()
If Date < 16 / 6 / 2007 Then
ActiveWorkbook.Close SaveChanges:=False
End If
End Sub
Sub Workbook_open()
If 16 / 6 / 2007 > Date Then
Worksheets("Datos").Visible = True
End If
End Sub
Sub Workbook_close()
Worksheets("Datos").Visible = xlSheetVeryHidden
End Sub

1 respuesta

Respuesta
1
Lo que te faltaría agregar es una instrucción en el evento Open de tu libro que oculte la hoja de portada y te muestre la de Datos
Private Workbook_Open()
Worksheets("Datos").Visible = True
Worksheets("Portada").Visible = xlSheetVeryHidden
End Sub
Y en el evento BeforeClose, la que te oculta la hoja Datos
Private Workbook_Beforeclose()
Worksheets("Datos").Visible =xlSheetVeryHidden
End Sub
De esta manera siempre se guardará el libro con la hoja Datos oculta. Al abrirlo, si no habilitan las macros, esa hoja no se verá. La hoja Portada puede contener un mensaje solicitando la habilitación.
Saludos y si el tema queda concluído no olvides finalizarlo
Elsa
** No te pierdas mi manual con las '400Macros' explicadas en español.
Elsa,
Perdona mi ignorancia pero soy nuevo en esto ¿me podrías ayudar escribiendo toda la macro desde el principio?
Muchas gracias
Parece que mi respuesta entró en un bucle... por la cantidad de veces que se repitió...
Bueno, aquí va. Primero debes evaluar qué quieres con las fechas, porque estas 2 instrucciones se contradicen:
If Date < 16 / 6 / 2007 Then
ActiveWorkbook.Close
If 16 / 6 / 2007 > Date Then
Worksheets("Datos").Visible
Voy a usar el evento Open del libro, en lugar de las rutinas AutoOpen. Por lo tanto en el objeto ThisWorkbook copiá estas:
Private Workbook_Open()
'si la fecha es mayor al 2007 el libro se cerrará
'cambié el signo a mayor, pero ajustalo a tus necesidades
If Date > 16 / 6 / 2007 Then
ActiveWorkbook.Close SaveChanges:=False
End If
'se oculta y muestran las hojas
Worksheets("Datos").Visible = True
Worksheets("Portada").Visible = xlSheetVeryHidden
End Sub
Private Workbook_Beforeclose()
'se oculta la hoja Datos mostrando la de portada
Worksheets("Portada").Visible = True
Worksheets("Datos").Visible =xlSheetVeryHidden
End Sub
Estas son todas y debiera solucionar tu problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas