Como copiar la misma hoja de excel varias veces?

Ya se que se puede copiar la misma hoja de excel con el botón derecho del ratón y elegir la copia, ¿pero cómo podría crear una macro para que me pregunte la hoja que quiero copiar y el número de copias que quiero de esa hoja?.

He visto este código pero me da error al ejecutarlo ("error de compilación, no se ha definido la variable")

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

Gracias y un saludo

1 respuesta

Respuesta
1

Visita:

Cursos de Excel y Macros - YouTube


"Error de compilación, no se ha definido la variable"

Ese error puede ser porque no declaraste las variables.

Revisa el siguiente vídeo, ahí explico cómo declarar las variables de manera adecuada:

Declarar variables en vba excel. Curso de macros. - YouTube


Prueba la siguiente macro:

Sub CopiaHoja()
'Por Dante Amor
  Dim nombreHoja As Variant, NumeroDeCopias As Variant
  Dim i As Long
  '
  nombreHoja = Application.InputBox("Indique el nombre de la Hoja que desea copiar")
  If nombreHoja = "" Or nombreHoja = False Then
    Exit Sub
  End If
  '
  If Not Evaluate("ISREF('" & nombreHoja & "'!A1)") Then
    MsgBox "La hoja no existe"
    Exit Sub
  End If
  '
  NumeroDeCopias = Application.InputBox("Indique cuantas veces lo desea copiar", Type:=1) 'sólo números
  If NumeroDeCopias = "" Or NumeroDeCopias = False Then
    Exit Sub
  End If
  '
  For i = 1 To NumeroDeCopias
    Sheets(nombreHoja).Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = nombreHoja & " " & i
  Next i
  '
  MsgBox "Hoja copiada"
End Sub

Si quieres aprender más sobre macros, te recomiendo el siguiente vídeo para empezar a programar macros:

Consejos para desarrollar macros . curso de excel, curso de macros, excel, macros - YouTube


Sal u dos. Dante Amor

¡Gracias! 

Me ha funcionado perfecto y me has ahorrado tiempo en copiar una a una.

Un saludo

Visita:

Cursos de Excel y Macros - YouTube

Revisa las recomendaciones...

Hola, perdí el archivo original, he creado otro y ahora la macro no me funciona, pongo lo siguiente:

Sub CopiaHoja()
'Por Dante Amor
  Dim nombreHoja As Variant ,  NumeroDeCopias As Variant
  Dim i As Long
   '
  nombreHoja  =  Application.InputBox("Indique el nombre de la Hoja que desea copiar")
  If nombreHoja = "" Or nombreHoja = False Then
    Exit Sub
  End If
   '
  If Not Evaluate("ISREF('" & nombreHoja & "'!A1)") Then
    MsgBox  "La hoja no existe"
    Exit Sub
  End If
   '
  NumeroDeCopias = Application.InputBox("Indique cuantas veces lo desea copiar", Type:=1) 'sólo números
  If NumeroDeCopias = "" Or NumeroDeCopias = False Then
    Exit Sub
  End If
   '
  For i  =  1 To NumeroDeCopias
    Sheets(nombreHoja).Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = nombreHoja & " " & i
  Next i
   '
  MsgBox  "Hoja copiada"
End Sub
End Sub

Y al ejecutarla me dice "error de compilación: se esperaba:=

Me estoy volviendo loco y no veo el error, lo he intentado de todas las formas y el caso es que antes si me funcionaba.

Gracias y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas