Nombres de hojas automaticos

15/05/2008 - 22:07 por Silvia Gutierrez | Informe spam
Buenas tardes a todos, les queria lanzar la sigueinte pregunta, tengo un
fichero txt con 20 nombres, me gustaria :
a) que al abrir un libro nuevo se creara veinte hojas y qe cuyos nombres
fuesen los del txt.

b) que desde A1 a S1, apareciera los nombres de esas hojas.


No se si la parte a) se puede hacer de alguna forma automatica, les dejo el
formato de txt que tengo
nombre1
nombre2
nombre3
etc

Muchas gracias por adelantado

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
16/05/2008 - 04:31 | Informe spam
hola, Silvia !

... tengo un fichero txt con 20 nombres, me gustaria:
a) que al abrir un libro nuevo se creara veinte hojas y qe cuyos nombres fuesen los del txt.
b) que desde A1 a S1, apareciera los nombres de esas hojas.
No se si la parte a) se puede hacer de alguna forma automatica, les dejo el formato de txt que tengo
nombre1
nombre2
nombre3
etc



- ten preparado un libro de excel (p.e. con solo una hoja)
- copia/pega las siguientes lineas en un modulo de codigo estandar
- modifica la ruta correcta a donde guardas tu fichero *.txt
- corre la macro (estando activa la hoja 1) y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Crear_hojas()
Dim n As Byte, h As Byte
Application.ScreenUpdating = False
With ActiveSheet
Workbooks.OpenText _
"c:\documents and settings\<usuario>\mis documentosombres.txt"
n = Range([a1], [a65536].End(xlUp)).Rows.Count
.[a1].Resize(, n).Value = _
Application.Transpose(Range([a1], [a65536].End(xlUp)).Value)
ActiveWorkbook.Close False
For h = 1 To n
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(1, h)
Next
.Select
Cells.EntireColumn.AutoFit
End With
End Sub
Respuesta Responder a este mensaje
#2 Silvia Gutierrez
16/05/2008 - 22:33 | Informe spam
Hola Hector, muchas gracias por tus indicaciones me resolvieron el problema.
Te queria preguntar una cuestion en base a esta formula

Imaginate que el archivo nombres.txt esta compuesto por :
Juan
Pedro
Luis

y cuando inicia un nuevo curso sera el fichero txt

Alvaro
Sonia
Juan


entonces se crearan una nuevo libro con tres hojas con esos nombres y la
hoja1 tendra como cabecera los nombres de las hojas nuevas gracias a tus
indicaciones,
Pero tengo unos valores fijos que me gustaria automatizar

en la primera hoja tendria

-2--='Juan'!K35-='Pedro'!K35-='Luis'!K35
-3--='Juan'!L35-='Pedro'!L35-='Luis'!L35
-4--='Juan'!M35-='Pedro'!M35-='Luis'!M35



y en la segunda hoja


-2--='Alvaro'!K35-='Sonia'!K35-='Juan'!K35
-3--='Alvaro'!L35-='Sonia'!L35-='Juan'!L35
-4--='Alvaro'!M35-='Sonia'!M35-='Juan'!M35

Es decir me cambiaran los nombre de las hojas y por tanto las formulas en
funcion del nombre de las hojas, hay alguna forma para que me hiciera eso
automaticamente. Para mi los valores de esas filas que corresponde a las
nuevas jas creadas son como una plantila, lo unico que cada ciertos meses
cambian los alumnos, por tanto cambias los nombres de las hojas del libro y
cambian la fila 1 de la hoja1 del libro, pero siempre iran a buscar el valor
"""4--='***'!M35A"" ( entendiendo por "*****" el nuevo nombre de la hoaj. A
modo de ejemplo solo he puesto tres filas pero son bastantes mas, eso si solo
es en esa misma columna, es decir si la cabecera de la columna es Alvaro, las
formulas que llamen a la Hoja alvaro solo estan esa es columna.


Es un tanto lioso tal vez lo que he querido explicar, si debo a clarar algo
mas hazmelo saber.


Muchas gracias por adelantado


"Héctor Miguel" wrote:

hola, Silvia !

> ... tengo un fichero txt con 20 nombres, me gustaria:
> a) que al abrir un libro nuevo se creara veinte hojas y qe cuyos nombres fuesen los del txt.
> b) que desde A1 a S1, apareciera los nombres de esas hojas.
> No se si la parte a) se puede hacer de alguna forma automatica, les dejo el formato de txt que tengo
> nombre1
> nombre2
> nombre3
> etc

- ten preparado un libro de excel (p.e. con solo una hoja)
- copia/pega las siguientes lineas en un modulo de codigo estandar
- modifica la ruta correcta a donde guardas tu fichero *.txt
- corre la macro (estando activa la hoja 1) y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Crear_hojas()
Dim n As Byte, h As Byte
Application.ScreenUpdating = False
With ActiveSheet
Workbooks.OpenText _
"c:\documents and settings\<usuario>\mis documentosombres.txt"
n = Range([a1], [a65536].End(xlUp)).Rows.Count
.[a1].Resize(, n).Value = _
Application.Transpose(Range([a1], [a65536].End(xlUp)).Value)
ActiveWorkbook.Close False
For h = 1 To n
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(1, h)
Next
.Select
Cells.EntireColumn.AutoFit
End With
End Sub



Respuesta Responder a este mensaje
#3 Héctor Miguel
17/05/2008 - 02:04 | Informe spam
hola, Silvia !

1) "te dejo" la tarea de tener preparadas las hojas "de resumen" (la hoja1 y la hoja2 mas las que se requieran)

2) estando como activa la hoja de resumen (segun el curso de que se trate) cambia la macro por la siguiente:
OJO: estoy usando una variable mas (c As Intger) dentro de un bucle For...Next con valores de 11 a 13
11 corresponde al numero de la columna K y el avance es hasta la columna M (13)
la formula se construye a partir de la fila 2 de cada columna: (c-9: 11-9 = 2)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Crear_hojas()
Dim n As Byte, h As Byte, c As Integer
Application.ScreenUpdating = False
With ActiveSheet
Workbooks.OpenText _
"c:\documents and settings\<usuario>\mis documentosombres.txt"
n = Range([a1], [a65536].End(xlUp)).Rows.Count
.[a1].Resize(, n).Value = _
Application.Transpose(Range([a1], [a65536].End(xlUp)).Value)
ActiveWorkbook.Close False
For h = 1 To n
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(1, h)
For c = 11 To 13
.Cells(c - 9, h).Formula = "='" & _
.Cells(1, h) & "'!" & Cells(35, c).Address(0, 0)
Next
Next
.Select
Cells.EntireColumn.AutoFit
End With
End Sub

__ la consulta original __
Imaginate que el archivo nombres.txt esta compuesto por :
Juan
Pedro
Luis
y cuando inicia un nuevo curso sera el fichero txt
Alvaro
Sonia
Juan

... tengo unos valores fijos que me gustaria automatizar
en la primera hoja tendria
-2--='Juan'!K35-='Pedro'!K35-='Luis'!K35
-3--='Juan'!L35-='Pedro'!L35-='Luis'!L35
-4--='Juan'!M35-='Pedro'!M35-='Luis'!M35
y en la segunda hoja
-2--='Alvaro'!K35-='Sonia'!K35-='Juan'!K35
-3--='Alvaro'!L35-='Sonia'!L35-='Juan'!L35
-4--='Alvaro'!M35-='Sonia'!M35-='Juan'!M35

... cambiaran los nombre de las hojas y por tanto las formulas en funcion del nombre de las hojas
hay alguna forma para que me hiciera eso automaticamente...
Respuesta Responder a este mensaje
#4 Silvia Gutierrez
19/05/2008 - 22:42 | Informe spam
Hola Hector, gracias por tus indicaciones y ayuda, me sirivieron de mucho.
Al ver la eficacia de la formula te quiero plantear una duda tomando como
ejemplo la tabla del anterior post me gustaria poder recuperar mas campos, es
decir que la tabla quedase asi

-2--='Alvaro'!Z28-='Sonia'!Z28-='Juan'!Z28
-3--='Alvaro'!AA28-='Sonia'!AA28-='Juan'!AA28
-4--='Alvaro'!AB28-='Sonia'!AB28-='Juan'!AB28
-5--='Alvaro'!AC28-='Sonia'!AC28-='Juan'!AC28
-6
-7--='Alvaro'!AF28-='Sonia'!AF28-='Juan'!AF28
-8--='Alvaro'!AG28-='Sonia'!AG28-='Juan'!AG28
-9--='Alvaro'!AH28-='Sonia'!AH28-='Juan'!AH28
-10--='Alvaro'!AI28-='Sonia'!AI28-='Juan'!AI28
-11--
-12--='Alvaro'!AL28-='Sonia'!AL28-='Juan'!AL28
-13--='Alvaro'!AM28-='Sonia'!AM28-='Juan'!AM28
-14--='Alvaro'!AN28-='Sonia'!AN28-='Juan'!AN28
-15--='Alvaro'!AO28-='Sonia'!AO28-='Juan'!AO28
-16-
-n1--='Alvaro'!HP28-='Sonia'!HP28-='Juan'!HP28
-n2--='Alvaro'!HQ28-='Sonia'!HQ28-='Juan'!HQ28
-n3--='Alvaro'!HR28-='Sonia'!HR28-='Juan'!HR285
-n4--='Alvaro'!HS28-='Sonia'!HS28-='Juan'!HS28
-n5
-n6--='Alvaro'!HV28-='Sonia'!HV28-='Juan'!HV28
-n7--='Alvaro'!HW28-='Sonia'!HW28-='Juan'!HW28
-n8--='Alvaro'!HX28-='Sonia'!HX28-='Juan'!HX28
-n9--='Alvaro'!HY28-='Sonia'!HY28-='Juan'!HY28
-n10--
-n11--='Alvaro'!IB28-='Sonia'!IB28-='Juan'!IB28
-n12--='Alvaro'!IC28-='Sonia'!IC28-='Juan'!IC28
-n13--='Alvaro'!ID28-='Sonia'!ID28-='Juan'!ID28
-n14--='Alvaro'!IE28-='Sonia'!IE28-='Juan'!IE28



Si te sirve de referencia busco siempre valores en la fila 28 a partir de la
columna z por tramos de 4 columnas (Z,AA,AB,AC) hay dos que no tomo ( AD,AE)
y vuelvo a tomar las cuatro siguientes columnas. Te he dejado en la tabla de
muestra los tres primeros bloques y los ultimos tres, para que te sirve de
referencia y lo he ordenado asi porque me imagine que seria mas facil para
armar tal vez un bloque.

Por adelantado muchas gracias Hector

"Héctor Miguel" wrote:

hola, Silvia !

1) "te dejo" la tarea de tener preparadas las hojas "de resumen" (la hoja1 y la hoja2 mas las que se requieran)

2) estando como activa la hoja de resumen (segun el curso de que se trate) cambia la macro por la siguiente:
OJO: estoy usando una variable mas (c As Intger) dentro de un bucle For...Next con valores de 11 a 13
11 corresponde al numero de la columna K y el avance es hasta la columna M (13)
la formula se construye a partir de la fila 2 de cada columna: (c-9: 11-9 = 2)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Crear_hojas()
Dim n As Byte, h As Byte, c As Integer
Application.ScreenUpdating = False
With ActiveSheet
Workbooks.OpenText _
"c:\documents and settings\<usuario>\mis documentosombres.txt"
n = Range([a1], [a65536].End(xlUp)).Rows.Count
.[a1].Resize(, n).Value = _
Application.Transpose(Range([a1], [a65536].End(xlUp)).Value)
ActiveWorkbook.Close False
For h = 1 To n
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(1, h)
For c = 11 To 13
.Cells(c - 9, h).Formula = "='" & _
.Cells(1, h) & "'!" & Cells(35, c).Address(0, 0)
Next
Next
.Select
Cells.EntireColumn.AutoFit
End With
End Sub

__ la consulta original __
> Imaginate que el archivo nombres.txt esta compuesto por :
> Juan
> Pedro
> Luis
> y cuando inicia un nuevo curso sera el fichero txt
> Alvaro
> Sonia
> Juan
>
> ... tengo unos valores fijos que me gustaria automatizar
> en la primera hoja tendria
> -2--='Juan'!K35-='Pedro'!K35-='Luis'!K35
> -3--='Juan'!L35-='Pedro'!L35-='Luis'!L35
> -4--='Juan'!M35-='Pedro'!M35-='Luis'!M35
> y en la segunda hoja
> -2--='Alvaro'!K35-='Sonia'!K35-='Juan'!K35
> -3--='Alvaro'!L35-='Sonia'!L35-='Juan'!L35
> -4--='Alvaro'!M35-='Sonia'!M35-='Juan'!M35
>
> ... cambiaran los nombre de las hojas y por tanto las formulas en funcion del nombre de las hojas
> hay alguna forma para que me hiciera eso automaticamente...



Respuesta Responder a este mensaje
#5 Héctor Miguel
20/05/2008 - 01:41 | Informe spam
hola, Silvia !

1) prueba cambiando esta parte de la macro (solo se agrega una variable y se cambia un tipo):
de: -> Dim n As Byte, h As Byte, c As Integer
a: -> Dim n As Byte, h As Byte, c As Byte, f As Byte

2) luego cambias esta parte de la macro:

For c = 11 To 13
.Cells(c - 9, h).Formula = "='" & _
.Cells(1, h) & "'!" & Cells(35, c).Address(0, 0)
Next

por esta otra:

f = 1
For c = 26 To 239
Select Case (c - 2) Mod 6
Case 0 To 3
f = f + 1
.Cells(f, h).Formula = "='" & _
.Cells(1, h) & "'!" & Cells(28, c).Address(0, 0)
End Select
Next

saludos,
hector.

Hola Hector, gracias por tus indicaciones y ayuda, me sirivieron de mucho.
Al ver la eficacia de la formula te quiero plantear una duda tomando como
ejemplo la tabla del anterior post me gustaria poder recuperar mas campos, es
decir que la tabla quedase asi

-2--='Alvaro'!Z28-='Sonia'!Z28-='Juan'!Z28
-3--='Alvaro'!AA28-='Sonia'!AA28-='Juan'!AA28
-4--='Alvaro'!AB28-='Sonia'!AB28-='Juan'!AB28
-5--='Alvaro'!AC28-='Sonia'!AC28-='Juan'!AC28
-6
-7--='Alvaro'!AF28-='Sonia'!AF28-='Juan'!AF28
-8--='Alvaro'!AG28-='Sonia'!AG28-='Juan'!AG28
-9--='Alvaro'!AH28-='Sonia'!AH28-='Juan'!AH28
-10--='Alvaro'!AI28-='Sonia'!AI28-='Juan'!AI28
-11--
-12--='Alvaro'!AL28-='Sonia'!AL28-='Juan'!AL28
-13--='Alvaro'!AM28-='Sonia'!AM28-='Juan'!AM28
-14--='Alvaro'!AN28-='Sonia'!AN28-='Juan'!AN28
-15--='Alvaro'!AO28-='Sonia'!AO28-='Juan'!AO28
-16-
-n1--='Alvaro'!HP28-='Sonia'!HP28-='Juan'!HP28
-n2--='Alvaro'!HQ28-='Sonia'!HQ28-='Juan'!HQ28
-n3--='Alvaro'!HR28-='Sonia'!HR28-='Juan'!HR285
-n4--='Alvaro'!HS28-='Sonia'!HS28-='Juan'!HS28
-n5
-n6--='Alvaro'!HV28-='Sonia'!HV28-='Juan'!HV28
-n7--='Alvaro'!HW28-='Sonia'!HW28-='Juan'!HW28
-n8--='Alvaro'!HX28-='Sonia'!HX28-='Juan'!HX28
-n9--='Alvaro'!HY28-='Sonia'!HY28-='Juan'!HY28
-n10--
-n11--='Alvaro'!IB28-='Sonia'!IB28-='Juan'!IB28
-n12--='Alvaro'!IC28-='Sonia'!IC28-='Juan'!IC28
-n13--='Alvaro'!ID28-='Sonia'!ID28-='Juan'!ID28
-n14--='Alvaro'!IE28-='Sonia'!IE28-='Juan'!IE28



Si te sirve de referencia busco siempre valores en la fila 28 a partir de la
columna z por tramos de 4 columnas (Z,AA,AB,AC) hay dos que no tomo ( AD,AE)
y vuelvo a tomar las cuatro siguientes columnas. Te he dejado en la tabla de
muestra los tres primeros bloques y los ultimos tres, para que te sirve de
referencia y lo he ordenado asi porque me imagine que seria mas facil para
armar tal vez un bloque.

Por adelantado muchas gracias Hector

"Héctor Miguel" wrote:

hola, Silvia !

1) "te dejo" la tarea de tener preparadas las hojas "de resumen" (la hoja1 y la hoja2 mas las que se requieran)

2) estando como activa la hoja de resumen (segun el curso de que se trate) cambia la macro por la siguiente:
OJO: estoy usando una variable mas (c As Intger) dentro de un bucle For...Next con valores de 11 a 13
11 corresponde al numero de la columna K y el avance es hasta la columna M (13)
la formula se construye a partir de la fila 2 de cada columna: (c-9: 11-9 = 2)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Crear_hojas()
Dim n As Byte, h As Byte, c As Integer
Application.ScreenUpdating = False
With ActiveSheet
Workbooks.OpenText _
"c:\documents and settings\<usuario>\mis documentosombres.txt"
n = Range([a1], [a65536].End(xlUp)).Rows.Count
.[a1].Resize(, n).Value = _
Application.Transpose(Range([a1], [a65536].End(xlUp)).Value)
ActiveWorkbook.Close False
For h = 1 To n
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = .Cells(1, h)
For c = 11 To 13
.Cells(c - 9, h).Formula = "='" & _
.Cells(1, h) & "'!" & Cells(35, c).Address(0, 0)
Next
Next
.Select
Cells.EntireColumn.AutoFit
End With
End Sub

__ la consulta original __
> Imaginate que el archivo nombres.txt esta compuesto por :
> Juan
> Pedro
> Luis
> y cuando inicia un nuevo curso sera el fichero txt
> Alvaro
> Sonia
> Juan
>
> ... tengo unos valores fijos que me gustaria automatizar
> en la primera hoja tendria
> -2--='Juan'!K35-='Pedro'!K35-='Luis'!K35
> -3--='Juan'!L35-='Pedro'!L35-='Luis'!L35
> -4--='Juan'!M35-='Pedro'!M35-='Luis'!M35
> y en la segunda hoja
> -2--='Alvaro'!K35-='Sonia'!K35-='Juan'!K35
> -3--='Alvaro'!L35-='Sonia'!L35-='Juan'!L35
> -4--='Alvaro'!M35-='Sonia'!M35-='Juan'!M35
>
> ... cambiaran los nombre de las hojas y por tanto las formulas en funcion del nombre de las hojas
> hay alguna forma para que me hiciera eso automaticamente...



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida