Copiar hoja si no existe al abrir un libro

Tengo el siguiente código:

Private Sub Workbook_Open()

Worksheets(Format(Now, "yyyy")).Activate
If Range("G9").Value = "" Then
Range("G9").Select
Else
Range("G9").End(xlDown).Select
End If
End Sub

Con él, me abre el libro en la hoja que corresponde con el año actual. El resto del código es para que no se vaya al final de la hoja cuando no hay introducido datos.

Lo que quiero añadir es que me compruebe si existe una hoja con el año actual; y en caso negativo, la añada, haciendo una copia de otra hoja, con su posterior cambio de nombre por el año en curso. Si no, que siga el curso del código primero.

1 Respuesta

Respuesta
1

Te dejo una macro que puede ayudarte. Fijate que al realizar la copia de la hoja, borra el contenido del rango A9:K20, puedes modificar este rango o eliminar la instrucción. No debería dar problema

Private Sub Workbook_Open()
''Modificada por nefese para DiegoBarralesLatorre en TodoExpertos.com en 170116
''Selecciona o crea la hoja correspondiente al año actual al abrir el libro
'Recorre el libro buscando la hoja del año actual
For Each Sheet In ActiveWorkbook.Sheets
  If Sheet.Name = Format(Now, "yyyy") Then
    a = a + 1
    Sheets(Format(Now, "yyyy")).Activate
    Exit For
  End If
Next Sheet
'Si la hoja del año vigente no existe, la crea copiando la última hoja existente
If a = 0 Then
  Sheets(ActiveWorkbook.Sheets.Count).Copy after:=Sheets(ActiveWorkbook.Sheets.Count) 'hace una copia de la última hoja al final del libro
  ActiveSheet.Name = Format(Now, "yyyy") 'Renombra la hoja copiada
  Range("A9:K20").ClearContents 'Borra el contenido del rango especificado
End If
'Selecciona la última fila de la columna G
Range("G" & ActiveSheet.Rows.Count).End(xlUp).Select
End Sub

Quedo pendiente de tu éxito. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas