** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - renombrar hojas excel
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradorenombrar hojas excel

 Responder Responder
Autor
Mensaje
porqueroles Ver desplegable
Habitual
Habitual


Unido: 18/Enero/2011
Estado: Sin conexión
Puntos: 53
Enlace directo a este mensaje Tema: renombrar hojas excel
    Enviado: 01/Noviembre/2017 a las 20:01
buenas tardes:
tengo un excel con 60 hojas. Necesito cambiar el nombre de estas hojas. En la primera hoja hay dos columnas columna A con los nombres actuales de las hojas y columna B con el nuevo nombre que quiero poner. Si alguna de las hojas de la  columna A no existe, quiero crearla con el nombre correspondiente  de la columna B.
Muchas gracias.
saludos

Arriba
porqueroles Ver desplegable
Habitual
Habitual


Unido: 18/Enero/2011
Estado: Sin conexión
Puntos: 53
Enlace directo a este mensaje Enviado: 01/Noviembre/2017 a las 22:41
alguien sabe como hacerlo mediante una macro.


Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3435
Enlace directo a este mensaje Enviado: 02/Noviembre/2017 a las 02:45

Cmo es más rápido hacerlo que explicarlo, por esta vez te doy la solución hecha


Sub Renamero()
Dim i As Integer

Dim WrkSheet As Worksheet

For i = 1 To Worksheets.Count
  Set WrkSheet = Sheets(i)
  WrkSheet.Name = "EstaHojaEsLaNúmero_" & i
 Next i
End Sub

Un saludo
El Búho es mi ídolo caido
Arriba
porqueroles Ver desplegable
Habitual
Habitual


Unido: 18/Enero/2011
Estado: Sin conexión
Puntos: 53
Enlace directo a este mensaje Enviado: 02/Noviembre/2017 a las 09:59
con esa macro voy dando a cada hoja un nombre correlativo, pero lo que no se es como hacer que 
que si el nombre de la hoja coincide con alguno de los de la columna A de la hoja indice, lo cambie por el que tiene al lado en la columna B.

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5558
Enlace directo a este mensaje Enviado: 02/Noviembre/2017 a las 14:23
No has dicho que es lo que tienes hecho y donde te has 'atascado' o donde te falla.

Publica tu código.
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 12234
Enlace directo a este mensaje Enviado: 02/Noviembre/2017 a las 16:58
Idea:

Prerequisito 

Crear una función para comprobar si una hoja existe. A falta de una idea mejor, yo haria que recibiera el nombre de la hoja y recorriera la colección hojas devolviendo True/False si existe o no. 

Procedimiento
Un Do..Loop sobre la columna A de la primera hoja (la que contiene los nombres)
Lanzar la función de existencia de hoja para el nombre "actual". Si existe, renombrar con el valor de la columna B. Si no existe, probar si es que ya existe con el nombre B. Si existe no se hace nada. Si no existe, se crea una hoja en blanco con el nombre de la columna B

Algo así:
Function ExisteHoja(strSheetName As String) as Boolean
  Dim i  As Integer
  ExisteHoja = False
  For i = 1 To ThisWorkBook.Sheets.Count
    If ThisWorkBook.Sheets(i).Name = strSheetName Then
      ExisteHoja = True
      Exit Function
    End If
  Next
End Function

Function Renombra
  Dim i As Integer

  i = 1
  Do
    If ThisWorkBook.Sheets(1).Cells(i,1) = "" Then
      Exit Do
    End If
    If ExisteHoja(ThisWorkBook.Sheets(1).Cells(i,1) Then
      ' Renombramos
      ThisWorkBook.Sheets(ThisWorkBook.Sheets(1).Cells(i,1)).Name = ThisWorkBook.Sheets(1).Cells(i,2)
    ElseIf ExisteHoja(ThisWorkBook.Sheets(1).Cells(i,2) Then
      ' No hacemos nada: existe ya con el nombre correcto
    Else
      ' No existe. Creamos con el nombre correcto
      ThisWorkbook.Sheets.Add After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
      ThisWorkbook.Sheets(ThisWorkbook.Worksheets.Count).Name = ThisWorkBook.Sheets(1).Cells(i,2)
    End If
    i = i +1
  Loop
End Function
(escrito del tiron)

Xavi, un minyó de Terrassa

Mi web
Arriba
porqueroles Ver desplegable
Habitual
Habitual


Unido: 18/Enero/2011
Estado: Sin conexión
Puntos: 53
Enlace directo a este mensaje Enviado: 02/Noviembre/2017 a las 22:59
Esto es lo que buscaba, voy a probarlo a ver que tal funciona, pero con lo que ha escrito ya me vale.
Muchisimas gracias Xavi por su ayuda
Puede dar el hilo por cerrado
saludos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable