Macro que copie nombre de hoja (origen) a nueva hoja(creada), y su encabezado (rango de celdas)

Hola, buenos días:
Bien, sigo siendo novata aunque ya he resuelto uno que otro problemilla por mi misma pero sigo batallando con algunas cosillas como la que les planteo en seguida:
Tengo mi macro actual, la cual funciona copiando las filas rellenas de las hojas en nuevas hojas, eso lo hace de maravilla, pero lo que me falla es que la nueva hoja con las filas rellenas se llame de la misma forma que la de origen (de donde se obtuvieron las filas rellenas) además de copiar el encabezado de cada hoja (rango "A1:A5" - "O1:O6") que se ubique por arriba de las filas que actualmente la macro copia en la hoja nueva. Ojalá me puedan ayudar u orientar!. Anexo la macro con la cual estoy trabajando. Desde ya, muchas gracias.

Sub copiafilarellena()
For Each sh In ActiveWorkbook.Sheets
'selecciono la hoja
sh.Select
'puedo omitir hoja
If sh.Name <> "Sheet3" Then
Application.ScreenUpdating = False
On Error Resume Next
Set h1 = ActiveSheet
Set h2 = Sheets.Add
'ActiveSheet.Name = Nuevo_Nombre
h1.Select
ini = "A"
fin = "O"
For i = 2 To h1.Range(ini & Rows.Count).End(xlUp).Row
si = 0
For j = 1 To Range(fin & 1).Column
Cells(i, j).Select
If Cells(i, j).Interior.ColorIndex = 6 Or Cells(i, j).Interior.ColorIndex = 27 Then
si = 1
Else
si = 0
End If
Next
If si = 1 Then
Range(ini & i & ":" & fin & i).Select
h1.Range(ini & i & ":" & fin & i).Copy h2.Range(ini & h2.Range(ini & Rows.Count).End(xlUp).Row + 1)
Selection.Delete Shift:=xlUp
i = i - 1
End If
Next
End If
'pasa a la hoja siguiente
Next sh
Application.ScreenUpdating = True
End Sub

Respuesta
1

'variable global

global nombre_hoja as String

'cada hoja tiene su nombre único , lo que se me ocurre es lo siguiente
'copia el nombre de la hoja anterior de esta manera

nombre_hoja = ActiveSheet.Name

'A menos que el nombre de la hoja sea fijo entonces lo puedes hacer
'de esta manera , (SI ES LA PRIMERA HOJA)

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

'A menos que el nombre de la hoja sea fijo entonces lo puedes hacer

'de esta manera , (SI ES LA ULTIMA HOJA)

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

'y con el nombre agregarle un espacio al final de esta manera :
Worksheets.Add.Name = nombre_hoja & " "

Elizabeth,

Te explico la respuesta mejor. Uno en excel por un tema de objetos no puede repetir el mismo nombre entre hojas. Por lo mismo la mejor solución es copiar el nombre de la hoja a una variable y al momento de crear una nueva hoja poner el nombre de la variable y un espacio, asi se ven iguales pero como objeto son totalmente diferentes solamente por el espacio. Ahi te deje las sentencias para hacer cada una de las cosas que necesitas.

Saludos y ojala te pueda haber Ayudado.

Nicolás Hernandez

Agradezco la rápida respuesta, y si, ya había sondeado la posibilidad (como puedes ver en la macro la línea : ActiveSheet.Name = Nuevo_Nombre al que le he agregado ya el espacio &" ", mi problema central radica en saber en que parte del código de esta macro se le asigna el nombre a la hoja nueva?? Desde ya, mil gracias!.

Set h2 = Sheets.Add

' Ahi se le asigna.

'esto retorna un objeto tipo sheet o hoja, el cual puedes nombrar de una como aquí
Sheets.Add.Name = "Test"
o usar un objeto o variable para nombrarlo después como lo tienes tu

Set Sh = Sheets.Add

Sh.Name = "Test"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas