Copiar una hoja muchas veces y que tengan de nombre las fechas del los días siguientes

Bueno para empezar lo primero que quería saber es si se puede copiar una hoja y su contenido (formulas tablas cuadros etc.) muchas veces, por lo que estuve viendo parece que sin una macro no se puede. Y ya que pregunto si alguien conoce una macro para hacer eso, también quería saber si a las hojas copiadas se les puede poner de nombre la fecha de los días subsiguientes. Por ejemplo hoy copio mi hoja que se llama "01-09-2017" y quiero copiarla 121 veces (hasta fin de año) y las hojas nuevas se llamen "02-09-2017", "03-09-2017" ... "31-12-2017" .

1 respuesta

Respuesta
1

Prueba con esta macro y comentas

Sub copiar_varias_veces()
fecha_hoy = Date
fecha_fin = CDate("31/12/" & Year(fecha_hoy))
dias = fecha_fin - fecha_hoy
For i = 1 To dias
    If i = 1 Then fechad = fecha_fin
    If i > 1 Then fechad = fechad - 1
    texto = WorksheetFunction.Text(fechad, "dd-mm-yyyy")
    Sheets("hoja1").Copy after:=Sheets(1)
    ActiveSheet.Name = texto
Next i
End Sub

Hola, primero me daba error "Se a producido el error '9' en tiempo de ejecución: Subíndice fuera de intervalo", ahí le cambie el nombre "hoja1" por el nombre de la ultima hoja de mi documento "05-09-17", ahí anduvo, pero me creo todas las hojas a partir de la primer hoja del documento que es la hoja "12-04-17".

Ya que vuelvo a consultar. Tengo otro macro que encontré, pero no me crea las hojas con la fecha como el tuyo, no se podrán combinar los dos? 

este es el que encontré 

Sub CopiaHoja()
On Error Resume Next
nombreHoja = InputBox("Indique el nombre de la Hoja que desea copiar")
For x = 1 To Sheets.Count
If ActiveWorkbook.Sheets(x).Name = nombreHoja Then
ExisteHoja = True
IndiceHoja = x
End If
Next x
If ExisteHoja = True Then
NumeroDeCopias = InputBox("Indique cuantas veces lo desea copiar")
For y = 1 To NumeroDeCopias
Nombre = Val(nombreHoja) + y
Sheets(IndiceHoja).Select
Sheets(IndiceHoja).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Nombre
Next y
Else
MsgBox "La hoja no existe"
End If
End Sub

Desde ya muchísimas gracias! Siempre me sorprende la gente de este foro, son todos muy altruistas :D

Demasiado código en esa macro hace en 40 líneas lo que se puede hacer en menos de 10, te envío la macro modificada, te pide la hoja que quieres copiar, de no existir termina el programa, en caso contrario te creara el numero de copias para el que esta programado.

Sub copiar_varias_veces()
HOJA = InputBox("Que hoja deseas copiar?", "AVISO")
If HOJA = Empty Then End
On Error Resume Next
Sheets(HOJA).Select
If Err.Number > 0 Then MsgBox ("NO EXISTE LA HOJA " & HOJA), vbInformation, "AVISO": End
On Error GoTo 0
REM---------------------------
fecha_hoy = Date
fecha_fin = CDate("31/12/" & Year(fecha_hoy))
dias = fecha_fin - fecha_hoy
For i = 1 To dias
    If i = 1 Then fechad = fecha_fin
    If i > 1 Then fechad = fechad - 1
    texto = WorksheetFunction.Text(fechad, "dd-mm-yyyy")
    Sheets(HOJA).Copy After:=Sheets(1)
    ActiveSheet.Name = texto
Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas