Listar las hojas de un libro

13/11/2004 - 18:22 por Playa de Chilches - atención al cliente | Informe spam
Alguien sabe como puedo relacionar en una hoja nueva las hojas que componen
otro libro excel.
Si ademas me indicarais como escribir el hipervinculo para abrirlas sería
estupendo.
Gracias

Preguntas similare

Leer las respuestas

#1 julian-Vlc-Sp
13/11/2004 - 21:47 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias.

Para listar las hojas de un libro en un rango determinado de una hoja
concreta, puedes usar lo siguiente:

* * * * * * * * * *
INICIO CODIGO
* * * * * * * * * *
Option Explicit

Sub leer_nombres_hojas()

Dim hoja As Worksheet
Dim i As Long

' En las dos siguientes lineas, indicamos la hoja donde se quieren escribir
los nom-
' bres de las hojas del libro activo, y el rango donde queremos escribirlos.

Sheets("NOMBRE_HOJA_RECEPTORA").Select

Range("a10:a1000").Select

' En la siguiente linea borramos el contenido del rango

Selection.ClearContents

i = -1

' En las siguientes lineas podemos excluir hojas del listado (las qeu
podamos tener
' ocultas o bloqueadas, por ejemplo)

For Each hoja In Worksheets

If hoja.Name <> "hojax" And hoja.Name <> "hoja 2" Then

i = i + 1

' En la siguiente linea, "a" y 10 hay que sustituirlos por los valores de la
primera
' celda del rango qeu queremos rellenar, en este ejemplo, es la A10.

ActiveSheet.Range("a" & Trim(Str(10 + i))).Value = hoja.Name

End If

Next

' En la siguiente linea, se llama a un procedimiento que ordena
alfabeticamente las
' celdas de un rango. El procedimiento se transcribe a continuacion de este.

Call ordenar_un_rango

End Sub

Sub ordenar_un_rango()

' En la siguiente linea desprotegemos la hoja si esta protegida con la
contraseña xx

ActiveSheet.Unprotect password:="xx"

' En la siguiente linea hay que cambiar A10:A100 por el rango qeu queramos
ordenar,
' y A10 por la primera celda del rango que queremos ordenar

Range("A10:A100").Select
Selection.Sort Key1:=Range("A10"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

' En la siguiente linea, volvemos a proteger la hoja con la contraseña xx

ActiveSheet.Protect password:="xx", DrawingObjects:=True,
Contents:=True, Scenarios:=True

End Sub

* * * * * * * *
FIN CODIGO
* * * * * * * *

SALUDOS.
julian-Valencia-España

http://www.access-facil.tk
http://www.access-sin-codigo.tk

"Playa de Chilches - atención al cliente"
escribió en el mensaje news:%
Alguien sabe como puedo relacionar en una hoja nueva las hojas que
componen
otro libro excel.
Si ademas me indicarais como escribir el hipervinculo para abrirlas sería
estupendo.
Gracias


Respuesta Responder a este mensaje
#2 julian-Vlc-Sp
13/11/2004 - 21:55 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias.

Para ir a una hoja, yo hago lo siguiente:

En una celda, con lo de validacion de datos, hago una lista desplegable con
los nombres de las hojas qeu los coje en el rango qeu hemos rellenado con el
codigo de mi respuesta anterior.

Una vez seleccionada la hoja deseada en la lista desplegable, tengo varios
botones que me permiten IR a la hoja seleccionada, COPIARLA con otro nombre,
ELIMINARLA, y RENOMBRARLA.

A continuacion pego el codigo qeu uso para el boton IR A:

* * * * * * * * * *
INICIO CODIGO
* * * * * * * * * *

Private Sub BotonIR_Click()

' En la siguiente linea hay que cambiar e10 por el nombre de la celda que
tiene la
' lista desplegable para seleccionar la hoja deseada.

If Range("e10").Value = 0 Then
MsgBox "Primero seleccione una HOJA"
Exit Sub
End If

'En las dos lineas siguientes tambien hay qeu poner la celda correcta

If Range("E10").Value <> "" Then
Sheets(Range("E10").Value).Select
End If

End Sub

* * * * * * * *
FIN CODIGO
* * * * * * * *

SALUDOS.
julian-Valencia-España

http://www.access-facil.tk
http://www.access-sin-codigo.tk

"Playa de Chilches - atención al cliente"
escribió en el mensaje news:%
Alguien sabe como puedo relacionar en una hoja nueva las hojas que
componen
otro libro excel.
Si ademas me indicarais como escribir el hipervinculo para abrirlas sería
estupendo.
Gracias


Respuesta Responder a este mensaje
#3 Luis
15/11/2004 - 04:20 | Informe spam
Tambien puedes usar esta opcion ya que deseas identificar las hojas en otro
libro y a la vez, seleccionar una de ellas.

1. Este codigo (que debes colocar en un modulo) te crea la lista de hojas y
te permite seleccionar una, aunque el libro este cerrado:

Sub LISTARHOJAS()
'ESTE CODIGO ABRE OTRO LIBRO, LEE LAS HOJAS EXISTENTES Y MUESTRA LA HOJA QUE
SELECCIONE EN UN CUADRO DE ENTRADA
Dim Ruta As String
Dim EsteLibro, Msg, Hoja As String
Dim Fila, Con, Ini As Long
Dim W As Workbook
Ruta = Application.GetOpenFilename("Archivos Excel (*.xls), *.xls", ,
"Busque el libro que desea abrir") ' abre el Dialogo para buscar el libro
If Ruta = "Falso" Then Exit Sub
EsteLibro = Mid(Ruta, InStrRev(Ruta, "\") + 1, Len(Ruta) -
InStrRev(Ruta, "\")) 'extraemos el nombre del libro
On Error GoTo Abrir ' controlador de error si el libro no esta abierto
Sigue:
Set W = Workbooks(EsteLibro) ' se valida si el libro esta abierto, de lo
contrario va a Abrir
ThisWorkbook.Activate
Hoja1.Range("a1").Select ' se ubica en la Hoja donde se van a escribir
los nombres
Range(Selection, Selection.End(xlDown)).ClearContents 'borra conenido
anterior
Con = 2
Hoja1.Range("a1") = "Hojas en el libro: " 'encabezado
Hoja1.Range("b1") = Ruta 'registra la ruta completa para consultas
posteriores
For Fila = 1 To Workbooks(EsteLibro).Sheets.Count
Hoja1.Range("a" & Con) = Workbooks(EsteLibro).Sheets(Fila).Name
'relaciona hoja por hoja en la columna
Con = Con + 1
Next Fila
Fila = 2
Do While Hoja1.Range("a" & Fila) <> ""
Msg = Msg & Fila & " = " & Hoja1.Range("a" & Fila) & vbNewLine 'crea el
mensaje para mostrar sobre las Hojas encontradas
Fila = Fila + 1
Loop

Con = Val(Trim(InputBox("SELECCIONE EL NUMERO DE LA HOJA QUE QUIERE
ABRIR" & vbNewLine & vbNewLine & Msg))) ' pide un numero para mostrar una
hoja
If Con < 2 Or Con > Fila Then MsgBox "Mala seleccion":
Application.DisplayAlerts = False: Workbooks(EsteLibro).Close:
Application.DisplayAlerts = True: Exit Sub 'si el numero es incorrecto
Hoja = Hoja1.Range("a" & Con) ' asigna el nombre de la Hoja a la
variable Hoja
Workbooks(EsteLibro).Sheets(Hoja).Activate 'selecciona la Hoja indicada
en el otro libro
Exit Sub

Abrir:
Workbooks.Open Ruta
GoTo Sigue
End Sub

2. Ademas, este codigo (que debes colocar el el codigo de la hoja donde esta
la lista), cuando digites cualquier numero en la Hoja donde esta la lista,
te permite seleccionar una de las hojas del otro libro, asi este abierto o
cerrado:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Con As Long
Dim Ruta, EsteLibro, Msg, Hoja As String

Ruta = Hoja1.Range("b1")
EsteLibro = Mid(Ruta, InStrRev(Ruta, "\") + 1, Len(Ruta) -
InStrRev(Ruta, "\")) 'extraemos el nombre del libro
On Error GoTo Abrir ' controlador de error si el libro no esta abierto
Sigue:
Set W = Workbooks(EsteLibro) ' se valida si el libro esta abierto, de lo
contrario va a Abrir
ThisWorkbook.Activate
Fila = 2
Do While Hoja1.Range("a" & Fila) <> ""
Msg = Msg & Fila & " = " & Hoja1.Range("a" & Fila) & vbNewLine 'crea el
mensaje para mostrar sobre las Hojas encontradas
Fila = Fila + 1
Loop

Con = Val(Trim(InputBox("SELECCIONE EL NUMERO DE LA HOJA QUE QUIERE
ABRIR" & vbNewLine & vbNewLine & Msg))) ' pide un numero para mostrar una
hoja
If Con < 2 Or Con >= Fila Then MsgBox "Mala seleccion":
Application.DisplayAlerts = False: Workbooks(EsteLibro).Close:
Application.DisplayAlerts = True: Exit Sub 'si el numero es incorrecto
Hoja = Hoja1.Range("a" & Con) ' asigna el nombre de la Hoja a la
variable Hoja
Workbooks(EsteLibro).Sheets(Hoja).Activate 'selecciona la Hoja indicada
en el otro libro
Exit Sub

Abrir:
Workbooks.Open Ruta
GoTo Sigue
End Sub


Luis Medina
MENUFazt - Menu Excel Multifunciones
http://www11.brinkster.com/luism0/


"Playa de Chilches - atención al cliente"
escribió en el mensaje news:#
Alguien sabe como puedo relacionar en una hoja nueva las hojas que


componen
otro libro excel.
Si ademas me indicarais como escribir el hipervinculo para abrirlas sería
estupendo.
Gracias







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.786 / Virus Database: 532 - Release Date: 29/10/2004
Respuesta Responder a este mensaje
#4 Luis
15/11/2004 - 04:41 | Informe spam
Aclaracion: le hice una mejora al codigo que puse antes para que el del
modulo funcione sin afectarse con el evento WorkSheet_Change:

1. Este codigo (que debes colocar en un modulo) te crea la lista de hojas y
te permite seleccionar una, aunque el libro este cerrado:

Public Ini As Long

Sub LISTARHOJAS()
'ESTE CODIGO ABRE OTRO LIBRO, LEE LAS HOJAS EXISTENTES Y MUESTRA LA HOJA QUE
SELECCIONE EN UN CUADRO DE ENTRADA
Dim Ruta As String
Dim EsteLibro, Msg, Hoja As String
Dim Fila, Con As Long
Dim W As Workbook
Ruta = Application.GetOpenFilename("Archivos Excel (*.xls), *.xls", ,
"Busque el libro que desea abrir") ' abre el Dialogo para buscar el libro
If Ruta = "Falso" Then Exit Sub
EsteLibro = Mid(Ruta, InStrRev(Ruta, "\") + 1, Len(Ruta) -
InStrRev(Ruta, "\")) 'extraemos el nombre del libro
On Error GoTo Abrir ' controlador de error si el libro no esta abierto
Sigue:
Set W = Workbooks(EsteLibro) ' se valida si el libro esta abierto, de lo
contrario va a Abrir
Ini = 1
ThisWorkbook.Activate
Hoja1.Range("a1").Select ' se ubica en la Hoja donde se van a escribir
los nombres
Range(Selection, Selection.End(xlDown)).ClearContents 'borra conenido
anterior
Con = 2
Hoja1.Range("a1") = "Hojas en el libro: " 'encabezado
Hoja1.Range("b1") = Ruta 'registra la ruta completa para consultas
posteriores
For Fila = 1 To Workbooks(EsteLibro).Sheets.Count
Hoja1.Range("a" & Con) = Workbooks(EsteLibro).Sheets(Fila).Name
'relaciona hoja por hoja en la columna
Con = Con + 1
Next Fila
Fila = 2
Do While Hoja1.Range("a" & Fila) <> ""
Msg = Msg & Fila & " = " & Hoja1.Range("a" & Fila) & vbNewLine 'crea el
mensaje para mostrar sobre las Hojas encontradas
Fila = Fila + 1
Loop

Con = Val(Trim(InputBox("SELECCIONE EL NUMERO DE LA HOJA QUE QUIERE
ABRIR" & vbNewLine & vbNewLine & Msg))) ' pide un numero para mostrar una
hoja
If Con < 2 Or Con > Fila Then MsgBox "Mala seleccion":
Application.DisplayAlerts = False: Workbooks(EsteLibro).Close:
Application.DisplayAlerts = True: Exit Sub 'si el numero es incorrecto
Hoja = Hoja1.Range("a" & Con) ' asigna el nombre de la Hoja a la
variable Hoja
Workbooks(EsteLibro).Sheets(Hoja).Activate 'selecciona la Hoja indicada
en el otro libro
Ini = 0
Exit Sub

Abrir:
Workbooks.Open Ruta
GoTo Sigue
End Sub


2. Ademas, este codigo (que debes colocar el el codigo de la hoja donde esta
la lista), cuando digites cualquier numero en la Hoja donde esta la lista,
te permite seleccionar una de las hojas del otro libro, asi este abierto o
cerrado:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Con As Long
Dim Ruta, EsteLibro, Msg, Hoja As String
If Ini = 0 Then
Ruta = Hoja1.Range("b1")
EsteLibro = Mid(Ruta, InStrRev(Ruta, "\") + 1, Len(Ruta) -
InStrRev(Ruta, "\")) 'extraemos el nombre del libro
On Error GoTo Abrir ' controlador de error si el libro no esta abierto
Sigue:
Set W = Workbooks(EsteLibro) ' se valida si el libro esta abierto, de lo
contrario va a Abrir
ThisWorkbook.Activate
Fila = 2
Do While Hoja1.Range("a" & Fila) <> ""
Msg = Msg & Fila & " = " & Hoja1.Range("a" & Fila) & vbNewLine 'crea el
mensaje para mostrar sobre las Hojas encontradas
Fila = Fila + 1
Loop

Con = Val(Trim(InputBox("SELECCIONE EL NUMERO DE LA HOJA QUE QUIERE
ABRIR" & vbNewLine & vbNewLine & Msg))) ' pide un numero para mostrar una
hoja
If Con < 2 Or Con >= Fila Then MsgBox "Mala seleccion":
Application.DisplayAlerts = False: Workbooks(EsteLibro).Close:
Application.DisplayAlerts = True: Exit Sub 'si el numero es incorrecto
Hoja = Hoja1.Range("a" & Con) ' asigna el nombre de la Hoja a la
variable Hoja
Workbooks(EsteLibro).Sheets(Hoja).Activate 'selecciona la Hoja indicada
en el otro libro
End If
Exit Sub

Abrir:
Workbooks.Open Ruta
GoTo Sigue
End Sub


Luis Medina
MENUFazt - Menu Excel Multifunciones
http://www11.brinkster.com/luism0/

"Playa de Chilches - atención al cliente"
escribió en el mensaje news:#
> Alguien sabe como puedo relacionar en una hoja nueva las hojas que
componen
> otro libro excel.
> Si ademas me indicarais como escribir el hipervinculo para abrirlas


sería
> estupendo.
> Gracias






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.786 / Virus Database: 532 - Release Date: 29/10/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida