Cambio de nombre en hojas excel.

Eso! Eso es lo que necesito yo. Cambiar el nombre del objeto, pero por código. ¿Me podrían ayudar?
Que pase de tener algo como:
Hoja1(Ventas)
A algo como
Ventas(Ventas)
Para mi necesidad es más óptimo manejarlo de esta forma
Quedo atento
Muchas Gracias
He desarrollado una aplicación en VBA que trabaja sobre varios libros de Excel, con gran cantidad de hojas enlazadas entre sí. A efectos de simplificar las fórmulas y los macros, los nombres de hojas son simples y con números.
Desearía saber si hay alguna forma de que en pantalla los nombres de hojas se muestren con otros títulos diferentes a los que trata internamente el sistema. Por ejemplo, las hojas h1, h2, etc.. Que se mostrasen con títulos como "ventas 1ºtrimestre", "Estadística Enero", etc.
Me sería muy útil poder utilizar nombres que definan el contenido de las hojas, y al mismo tiempo que dichas hojas se pudieran tratar, a efectos de fórmulas y macros, con nombres muy cortos y numéricos, pues en el caso de ampliar los rangos de hojas es mucho más fácil variar los números de rango que el añadir, una por una, varias hojas más.
Si conoces algún sistema para llevar a cabo esto te estaría muy agradecido que me lo comunicases.
Saludos.
[email protected]

1 respuesta

Respuesta
1
Si lo que necesitas es que los nombres de las hojas en el editor VBA sean los mismos que los de las propias hojas, prueba con el siguiente código (mejor sobre una copia del libro por si no es esto lo que necesitas):
Sub Poner_como_nombre_de_código_el_de_la_hoja()
    Dim wksH As Worksheet
    On Error Resume Next
    For Each wksH In ThisWorkbook.Worksheets
        ThisWorkbook.VBProject.VBComponents(Sheets(wksH.Name).CodeName).Name = wksH.Name
    Next wksH
    Set wksH = Nothing
End Sub
Buen día
Muchísimas Gracias por responder.
Te comento que aunque mi intención no es que tengan los mismos nombres (pueden ser otros, el escrito anterior era para especificar que debía ser diferente al que trae por defecto Hoja1). La información se sirve mucho, ya que ya conozco algo de como trabajar con el nombre interno y no con el nombre externo. Por ejemplo, puedo mostrar el nombre interno de la Hoja2, así la etiqueta diga "ventas" con:
MsgBox Sheets(2).CodeName
Sin embargo, por lógica podría hacer algo como Sheet(2).CodeName="Leo" y debería funcionar, pero me sale un error ya que "CodeName" al parecer es de solo lectura.
Por otro lado, intento utilizar tu código, no le modifiqué NADA y no muestra ningún error, pero tampoco hace nada.
Por último intento hacer lo siguiente:
ThisWorkbook.VBProject.VBComponents(Sheets(2).CodeName).Name = "Leo"
Y me genera el error 1004. "El acceso mediante programación al proyecto de Visual Basic no es de confianza"
Gracias por toda la ayuda que me puedas brindar.
Cordialmente
Está claro que el equipo y/o la versión de Excel que estás usando tiene alguna política de seguridad que impide que VBA modifique en tiempo de ejecución los componentes del proyecto VBA.
Yo tengo Excel 2003 y el código que puse en mi mensaje anterior funciona sin problemas. A ti no te da error por la instrucción
    On Error Resume Next
Pero si la quitas supongo que te aparecerá el error que te sale si ejecutas la instrucción fuera del módulo.
Así que me temo que no puedo hacer nada más dado que no puedo reproducir el error puesto que el código yo lo ejecuto sin problemas
Hola, buen día experto.
Te comento que ya he solucionado el problema del error 1004. Es de la siguiente forma:
Se debe Configurar en el menú Herramientas - Macro - Seguridad.
En la ficha Fuentes de confianza, clic en Confiar en el acceso a proyectos de Visual Basic.
Una vez hecho esto tu código funciona perfectamente y ya logré cambiar el nombre de la hoja.
MUCHAS GRACIAS por tu amable ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas