libro tomanndo valores de varios mas

05/04/2006 - 02:40 por Daniel Navea | Informe spam
Hola
Primero que nada les felicito por sus rspuestas tan acertadas.
Quiero decirles que siempre consulto en su base de discusion.
Mi consulta es como sigue:
Tengo una carpeta "Marzo" con libros ordenados por fecha, vale decir,
existen varios libros llamados P.E. 01 de marzo 2006, otro libro con 02 de
marzo de 2006 y asi sucesivamente hasta llegar al 31 de marzo de 2006.
De estos libros necesito sacar datos de una hoja que todos ellos contienen,
llamada produccion.Pero esto debe ser en otro libro, y sacar los valores de
cada uno de los libros para poder tener una hoja de datos generales.
Creo haber explicado bien sino es como sigue:
En un libro nuevo necesito sacar el dato de produccion de los 31 libros del
mes.Este dato (datos en realidad), sta simpre n la misma ubicacion
existe alguna forma de hacerlo con macros?
o con planillas dinamicas?
o como sea Jiji
Espero que me puedan ayudar.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
05/04/2006 - 06:10 | Informe spam
hola, Daniel !

... una carpeta "Marzo" con... varios libros llamados P.E. 01 de marzo 2006... hasta llegar al 31 de marzo de 2006.
... necesito sacar datos de una hoja que todos... contienen, llamada produccion
... esto debe ser en otro libro... para... tener una hoja de datos generales.
... Este dato (datos en realidad), sta simpre n la misma ubicacion [...]



existen varias formas de obtener datos de los 31 otros libros, la siguientes es +/- 'sencilla/rapida/barata/...
suponiendo que en la hoja1 de un libro nuevo necesitas 'extraer'...
-> el dato que esta en la celda 'C15'
-> de la hoja llamada 'produccion' [que se encuentra en los 31 libros]
-> de cada uno de los 31 libros "xx de marzo de 200l.xls" [cuyo 'nombre' es variable SOLO en la parte del dia 1/31]
-> y que todos estan en la carpeta 'C:\Marzo\'

copia/pega la siguiente macro -> en un modulo de codigo 'normal' en el proyecto vba del libro 'nuevo'...
==Sub Copiar_produccion()
Dim Sig As Byte
Application.ScreenUpdating = False
With Worksheets("hoja1").Range("a1")
.Offset.Resize(, 2).Value = Array("dia", "produccion")
For Sig = 1 To 31
.Offset(Sig) = Sig
.Offset(Sig, 1).Formula = "='c:\marzo\[" & Format(Sig, "00") & " de marzo de 2006.xls]produccion'!c15"
.Offset(Sig, 1) = .Offset(Sig, 1)
Next
End With
End Sub

toma nota que la macro 'crea' una fomula que contiene un vinculo 'real' hacia la celda C1 de la hoja produccion de cada libro...
y la convierte a valor 'constante' en el ultimo 'paso' del bucle 'For...Next' -> .Offset(Sig, 1) = .Offset(Sig, 1)
-> si deseas 'conservar' los datos vinculados a su rango de origen... [simplemente] elimina dicha instruccion [o antrponle un apostrofo ->'<-]
-> una 'ventaja' es que no es necesario abrir los 31 libros [a menos que tengan clave contra apertura/escritura] -?-
-> si 'el asunto' es que sea necesario 'traer' [o leer] NO SOLO la celda C15... sino un rango... habria que hacerle 'ajustes' a la 'formula' ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Daniel Navea
05/04/2006 - 17:02 | Informe spam
Hola Miguel
Gracias por tu rapida respuesta, y es bastante buena la toma de datos
Mira en realidad es un rango de datos que debo tomar.especificamente de
ac12:ae25 de la hoja de produccion
disculpa la patudez pero ademas podria ser que se escogiera el mes a tratar?
me explico dentro de la arpeta que contiene la carpeta "marzo" existen otras
carpetas correspondientes a los meses enero, febrero, etc. y en todas las
carpetas de meses tienen los 31 dias correspondientes a ese mes.
de antemano agradezco que nos enseñes con tus conocimientos

"Héctor Miguel" escribió:

hola, Daniel !

> ... una carpeta "Marzo" con... varios libros llamados P.E. 01 de marzo 2006... hasta llegar al 31 de marzo de 2006.
> ... necesito sacar datos de una hoja que todos... contienen, llamada produccion
> ... esto debe ser en otro libro... para... tener una hoja de datos generales.
> ... Este dato (datos en realidad), sta simpre n la misma ubicacion [...]

existen varias formas de obtener datos de los 31 otros libros, la siguientes es +/- 'sencilla/rapida/barata/...
suponiendo que en la hoja1 de un libro nuevo necesitas 'extraer'...
-> el dato que esta en la celda 'C15'
-> de la hoja llamada 'produccion' [que se encuentra en los 31 libros]
-> de cada uno de los 31 libros "xx de marzo de 200l.xls" [cuyo 'nombre' es variable SOLO en la parte del dia 1/31]
-> y que todos estan en la carpeta 'C:\Marzo\'

copia/pega la siguiente macro -> en un modulo de codigo 'normal' en el proyecto vba del libro 'nuevo'...
==> Sub Copiar_produccion()
Dim Sig As Byte
Application.ScreenUpdating = False
With Worksheets("hoja1").Range("a1")
.Offset.Resize(, 2).Value = Array("dia", "produccion")
For Sig = 1 To 31
.Offset(Sig) = Sig
.Offset(Sig, 1).Formula = "='c:\marzo\[" & Format(Sig, "00") & " de marzo de 2006.xls]produccion'!c15"
.Offset(Sig, 1) = .Offset(Sig, 1)
Next
End With
End Sub

toma nota que la macro 'crea' una fomula que contiene un vinculo 'real' hacia la celda C1 de la hoja produccion de cada libro...
y la convierte a valor 'constante' en el ultimo 'paso' del bucle 'For...Next' -> .Offset(Sig, 1) = .Offset(Sig, 1)
-> si deseas 'conservar' los datos vinculados a su rango de origen... [simplemente] elimina dicha instruccion [o antrponle un apostrofo ->'<-]
-> una 'ventaja' es que no es necesario abrir los 31 libros [a menos que tengan clave contra apertura/escritura] -?-
-> si 'el asunto' es que sea necesario 'traer' [o leer] NO SOLO la celda C15... sino un rango... habria que hacerle 'ajustes' a la 'formula' ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
06/04/2006 - 02:32 | Informe spam
hola, Daniel !

... en realidad es un rango de datos que debo tomar.especificamente de ac12:ae25 de la hoja de produccion
... ademas podria ser que se escogiera el mes a tratar?
... dentro de la arpeta... "marzo" existen otras carpetas correspondientes a los meses enero, febrero, etc.
... en todas las carpetas de meses tienen los 31 dias correspondientes a ese mes...



1) el rango que necesitas 'traerte' de cada hoja 'produccion' [AC12:AE25] es de 3 columnas y 14 filas [entonces]...

a) si lo que necesitas es -> la suma de los valores en dicho rango de cada hoja produccion de los n_libros...
modifica la instruccion que 'pone' la formula [p.e.]...
de: -> .Offset(Sig, 1).Formula = "='c:\marzo\[" & Format(Sig, "00") & " de marzo de 2006.xls]produccion'!c15"
a: -> .Offset(Sig, 1).Formula = "=sum('c:\marzo\[" & Format(Sig, "00") & " de marzo de 2006.xls]produccion'!ac12:ae25)"

b) si necesitas NO una suma... sino una 'distribucion' [+/- discrecional] de los datos EN la hoja 'X' del libro 'nuevo'...
cual seria el 'arreglo' [o rango] para depositar 3 columnas x 14 filas -> por cada hoja 'produccion' de los n_libros -???-

2) [en realidad] no hay 'truco' en la propuesta, ya que se trata de una 'cadena de texto' que puede ser 'descompuesta' en secciones ;)
puedes sustituir la palabar 'marzo' [p.e.] por el contenido de alguna celda [digamos... 'C1'] +/- como sigue:
.Offset(Sig, 1).Formula = "=sum('c:\" & [c1] "\[" & Format(Sig, "00") & " de " & [c1] & " de 2006.xls]produccion'!ac12:ae25)"
donde se supone que la celda 'C1' de la hoja activa contiene la palabra 'marzo' ;) [o... como sea necesario] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida