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

#6 Silvia Gutierrez
20/05/2008 - 23:05 | Informe spam
Hector muchas gracias por ese codigo tan perfecto, te queria pedir un favor
como viste en la tabla que te deje de ejemplo por cada tramo de cuatro dejaba
una linea en blanco, por eso en mi ejemplo la fila 6, 11, 16, etc estaba en
blanco no se si es posible hacer eso y una cosa más, que en vez de empezar en
la columnaA comenzara en la columnaB.


Hector si por un ampliacion en las hojas en vez de los datos estar en la
fila 28 estuviesen en la 40 que deberia cambiar en el codigo? El resto de las
cosas seria exactamente igual


Por adelantado, muchas gracias

"Héctor Miguel" wrote:

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
#7 Héctor Miguel
21/05/2008 - 04:49 | Informe spam
hola, Silvia !

__ 1 __
... en la tabla... de ejemplo por cada tramo de cuatro dejaba una linea en blanco
por eso en mi ejemplo la fila 6, 11, 16, etc estaba en blanco no se si es posible hacer eso


__ 2 __
y una cosa mas, que en vez de empezar en la columnaA comenzara en la columnaB


__ 3 __
... si por un ampliacion en las hojas en vez de los datos estar en la fila 28
estuviesen en la 40 que deberia cambiar en el codigo?...



1) ANTES de la instruccion "End Select" (de la propuesta de cambios anterior)...
=> agrega una instruccion Case +/- como sigue:

Case 4
f = f + 1

2) en el codigo "original" de la propuesta de macro, cambia las instrucicones en dos lineas:

linea 7:
de: -> .[a1].Resize(, n).Value = _
a: -> .[b1].Resize(, n).Value = _

linea 10:
de: -> For h = 1 To n
a: -> For h = 2 To n + 1

3) cambia la ultima instruccion del bucle Select Case... en el Case 0 To 3

de: -> .Cells(1, h) & "'!" & Cells(28, c).Address(0, 0)
a: -> .Cells(1, h) & "'!" & Cells(40, c).Address(0, 0)

saludos,
hector.
Respuesta Responder a este mensaje
#8 Silvia Gutierrez
21/05/2008 - 23:28 | Informe spam
Hector muchas gracias por tus indicaciones me vino de maravilla tu respuesta.

Te comento una duda que esta relacionda con las hojas que tengo. Tengo en
una ruta la carpeta "A" ("c:\documents and settings\miuser\mis
documentos\A") con varios docuemntos excel con el nombre 2006.xls, 2007.xls
y 2008.xls. Yo en cada uno de esos libros tengo mis 20 hojas creadas ( con
una macro que va de miedo por cierto jejejej)
En todas las hojas despues de hacer una serie de calculos tengo un rango
C150-190
que es igual en todas exceptuando la columna D que son los valores
calculados por ejemplo

Tabla A
CD
150Carateris1--80
151Carateris2--47
152Carateris3--52
153Carateris4--61
154Carateris5--24
155Carateris6--2
y sigue


Entonces lo que me gustaria llevarme esos datos a un libro y que quedara la
hoja del libro nuevo de la sigueinte forma

Tabla B
1-Nombre1-Nombre2--Nombre3-y sigue tanto hojas tenga
2Carateris178--7512
3Carateris263--6512
4Carateris314--4512
5Carateris423--4512
6Carateris538--4512
y sigue





Nombre1, seria el titulo de las hojas. Lo que puede suceder que el nombre de
las hojas sean diferentes en cada libro siempre habara 200 productos por
libro pero con nombres diferentes. Me gustaria que en el nuevo libro
apareciera como en la tabla B, pero se fueran agregando los datos de cada
una de las hojas en funcion de los libros que hubiera porque cada año añadire
una hoja nueva 2009.xls, 2010.xls, etc

1-Nombre1-Nombre2--Nombre3-y sigue tanto hojas tenga
2Carateris178--7514
3Carateris263--6515
4Carateris314--4517
5Carateris423--4519
6Carateris538--4512
y sigue el año 2006

42Carateris177--11--saldra una columna mas en la
tabla
43Carateris264--10
44Carateris317--19
45Carateris426--12
46Carateris530--13
y sigue el año 2007


84Carateris177-85--11--saldra una columna mas en la
tabla
85Carateris264-58--10
86Carateris317-14--12
87Carateris426-47--11
88Carateris530-50--12
y sigue el año 2007


Con esta tabla trato de mostrar algun ejemplo en el sentido que en el año
2006, hay 20 columnas por los productos, pero en en 2007 el producto2 que
corresponderia a la columnaC
se queda en blanco porque no existe, entonces seguira existiendoo 20
productos pero habra una columna mas, pero en el 2008 si existe el producto2
en al columnaC, pero habra otra
columna que se quedara en blanco porque faltara otro producto.


Es algo extenso lo que he relatado, pero ha sido para explicartelo lo mejor
posible, tal vez me haya dejado algo por explicar.


Por adelantado muchas gracias por tu ayuda

"Héctor Miguel" wrote:

hola, Silvia !

__ 1 __
> ... en la tabla... de ejemplo por cada tramo de cuatro dejaba una linea en blanco
> por eso en mi ejemplo la fila 6, 11, 16, etc estaba en blanco no se si es posible hacer eso
__ 2 __
> y una cosa mas, que en vez de empezar en la columnaA comenzara en la columnaB
__ 3 __
> ... si por un ampliacion en las hojas en vez de los datos estar en la fila 28
> estuviesen en la 40 que deberia cambiar en el codigo?...

1) ANTES de la instruccion "End Select" (de la propuesta de cambios anterior)...
=> agrega una instruccion Case +/- como sigue:

Case 4
f = f + 1

2) en el codigo "original" de la propuesta de macro, cambia las instrucicones en dos lineas:

linea 7:
de: -> .[a1].Resize(, n).Value = _
a: -> .[b1].Resize(, n).Value = _

linea 10:
de: -> For h = 1 To n
a: -> For h = 2 To n + 1

3) cambia la ultima instruccion del bucle Select Case... en el Case 0 To 3

de: -> .Cells(1, h) & "'!" & Cells(28, c).Address(0, 0)
a: -> .Cells(1, h) & "'!" & Cells(40, c).Address(0, 0)

saludos,
hector.



Respuesta Responder a este mensaje
#9 Héctor Miguel
22/05/2008 - 03:22 | Informe spam
hola, Silvia !

no se si ha "lo notaste"... pero...
tus consultas tienen la costumbre de acrecentar los temas de forma indiscriminada
poco (o nada) tiene que ver la consulta inicial (asunto) con el "desarrollo" de los mensajes
aunque en tus ampliaciones de detalles digas que "esta relacionada" (con la hoja mas no con "el asunto")
"esto" convierte al hilo en temas de tutti-frutti y (como en este caso) "inhiben" la participacion DE TODOS

cuando tengas un tiempecito (de ocio ?) da una vuelta por esta pagina:
- aqui puedes encontrar algunos "tips" de como se debiera postear en los grupos de noticias...
-> Hints And Tips For New Posters In The Excel Newsgroups
http://www.cpearson.com/Excel/newposte.htm
tratando de NO omitir el comentario y el enlace del punto 9 (adjuntos en los mensajes)
-> http://www.cpearson.com/Excel/Attachments.htm

-> o... si le tienes "flojerilla" al ingles... me he permitido hacer una (modesta) traduccion...
que puedes visitar en: -> http://excel4all.spaces.live.com/

(probablemente) entenderas algunas de mis respuestas a este tipo de "hilos" :))

saludos,
hector.
Respuesta Responder a este mensaje
#10 Silvia Gutierrez
22/05/2008 - 21:34 | Informe spam
Hola Hector, no se si contestarte en este post o abrir uno nuevo, si fuera en
un nuevo le titularia "Avergonzado" he leido tu link y creo que no he
cumplido ni en un solo punto alguna buena conducta o pauta para postear en el
foro. Llevas toda la razon en tu anterior post, solo queda pedir perdon a los
foreros y en especial a ti y agradecerte que ademas de ayudarme en estas
consultas de excel me has enseñado alguna que otra cosa mas a las pruebas
me remito. Tratare postear con mejor criterio a partir de ahora.

Perdon y muchas gracias Hector

"Héctor Miguel" wrote:

hola, Silvia !

no se si ha "lo notaste"... pero...
tus consultas tienen la costumbre de acrecentar los temas de forma indiscriminada
poco (o nada) tiene que ver la consulta inicial (asunto) con el "desarrollo" de los mensajes
aunque en tus ampliaciones de detalles digas que "esta relacionada" (con la hoja mas no con "el asunto")
"esto" convierte al hilo en temas de tutti-frutti y (como en este caso) "inhiben" la participacion DE TODOS

cuando tengas un tiempecito (de ocio ?) da una vuelta por esta pagina:
- aqui puedes encontrar algunos "tips" de como se debiera postear en los grupos de noticias...
-> Hints And Tips For New Posters In The Excel Newsgroups
http://www.cpearson.com/Excel/newposte.htm
tratando de NO omitir el comentario y el enlace del punto 9 (adjuntos en los mensajes)
-> http://www.cpearson.com/Excel/Attachments.htm

-> o... si le tienes "flojerilla" al ingles... me he permitido hacer una (modesta) traduccion...
que puedes visitar en: -> http://excel4all.spaces.live.com/

(probablemente) entenderas algunas de mis respuestas a este tipo de "hilos" :))

saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida