Saltar al contenido

unir datos de varios archivos en otro


adobegsm

Recommended Posts

publicado

Hola me gustaria saber como puedo copiar de dos archivos diferentes (libro1 y libro2) los datos de cada uno de la hoja1 por ejemplo en otro archivo libro3 en la hoja uno y que me lo pegue seguido, hacia abajo. gracias!

publicado

no necesito orden porque luego hago filtros y tendria la misma cabecera que libro1 y libro2. solo necesito q me copie el contenido de cada hoja1 de libro1 y libro2 en libro3 hacia abajo. entiendes?

- - - - - Mensaje combinado - - - - -

ah gracias xD

publicado

Daré por hecho que tienes todos los libros implicados abiertos......y ejecutaremos la macro desde el libro3 (destino)

Cuando tenga la primera versión, la subo.

Un saludo,

Tese

publicado

Buenas, adobegsm

Se puede trabajar con libros cerrados......pero aunque no sea visible para el usuario hay que acceder a ellos (abrirlos) para poder leer los datos.

El problema es que no es posible probar un código con mi estructura de carpetas.....cuando lo que vas a intentar abrir está en tu equipo....

Otra cosa es que estuvieran en la misma ruta que el libro3 (destino).....de esa manera sí que se puede trabajar con ese dato e ir abriendo o cerrando lo que se considere........

De todos modos, si tus libros tienen algún nombre específico, diferente al que has adjuntado (imagino que ficticio), podría darte problemas al ejecutar la macro.

Como desconozco esos datos, vamos a intentar montar una primera aproximación......

Chao,

Tese

- - - - - Mensaje combinado - - - - -

Bueno, ahí tienes para probar.......

Solo te adjunto el destino, de manera que abras tú los otros 2 y pulses el botón que he creado (para facilitar la prueba...nada más.....)

Si eso es lo que quieres, luego ya vemos si necesitas otra forma de proceder....

Un saludo,

Tese

libro3_Tese.rar

libro3_Tese.rar

publicado

hola! bueno a ver te cuento. creo q lo tengo pero me falta un toque mas que seguro que para ti es una bobada xD

a ver de lo q me pasaste tu saque varias cosas. te paso los archivos y lo extraes en C: para que funcione bien. el codigo es facil, solo necesito que en vez de repetir codigo como por ejemplo:

agente1 = [E4]

Workbooks.Open Filename:=server & agente1 & "\" & "libro1.xls"

Sheets("Hoja1").Select

With Columns("a")

Set c = .Find("", LookIn:=xlValues)

vacio = c.Row

End With

Range("a2:c" & vacio - 1).Copy

Windows("libro1.xls").Activate

ActiveWindow.Close

Sheets("hoja1").Select

Range("A2").Select

blanco

ActiveSheet.Paste

ActiveCell.Offset(0, 1).Select

ActiveCell.FormulaR1C1 = agente1

agente2 = [E5]

Workbooks.Open Filename:=server & agente2 & "\" & "libro1.xls"

Sheets("Hoja1").Select

With Columns("a")

Set c = .Find("", LookIn:=xlValues)

vacio = c.Row

End With

Range("a2:c" & vacio - 1).Copy

Windows("libro1.xls").Activate

ActiveWindow.Close

Sheets("hoja1").Select

Range("A2").Select

blanco

ActiveSheet.Paste

ActiveCell.Offset(0, 1).Select

ActiveCell.FormulaR1C1 = agente2

pues hacer un blucle que me lo haga solo. se puede? gracias!

prueba.rar

prueba.rar

publicado

Pero de cuántos agentes estaríamos hablando?

En principio, se trataría de crear un "For i=1 to......" para que realizara lo mismo varias veces......pero hay que estar seguro de que no hay diferencias entre archivos en cuanto a columnas, celdas, etc.....

Por cierto, tu macro "limpiar" la podrías escribir en una única línea.......si necesitas ayuda puedo modificarla.....pero imagino que te gustaría "pegarte" con ella a tí mismo!!!.....:distracted:

Chao,

Tese

publicado

hola! pues lo he intentado lo de limpiar con un rango pero me da error y no se porq! y lo del for pues tp me sale. si te fijas le das a examinar agentes y te lista los que hay no?¿ pues el for seria usando una variable que guardara el numero de agentes con un contardor que cuente las casillas escritas pero tp lo consigo :S

saludos!

publicado

Para lo de limpiar, intenta con esto:


Range(ActiveCell, ActiveCell.Offset(50, 3)).ClearContents [color=#008080]' Solo cambia el 0 por 3[/color][color=#008080] y en vez de seleccionar solo
y luego limpiar, hazlo directamente[/color]
[/code]

Por tanto, te quedaría así:


Sub limpiar()
Range("A2").Select
Range(ActiveCell, ActiveCell.Offset(50, 3)).ClearContents
End Sub
[/CODE]

Un saludo,

Tese

publicado

Ahí tenemos el problema de que tus distintas macros van a buscar información que no existe en el ejemplo.......como [e4] ó [b2].........pero vamos a ver si le puedo hincar el diente!!!.....a veces, cuando vamos progresando en un proyecto, estamos un poco atenazados por los pasos dados anteriormente y eso es lo que hay que intentar evitar.......aunque no te voy a sugerir que modifiques nada, por supuesto........tú eres quien sabe cómo quieres que funcione.....

Un saludo,

Tese

publicado

Saludos.

Una opción con Macro Funciones, no importa si tienes o no abiertos los libros de extracción.

En la celda "D1" de los libros 1 y 2 coloca la siguiente formula

=CONTAR.SI(A2:A65536,"<>")[/code]

Esto es para establecer cuantas celdas tienen datos, por supuesto no deben de haber celdas vacías.

En el Libro3 coloca la siguiente macro, debes adecuar la ruta de tus libros si te es difícil o no lo entiendes sube la ruta completa de tus libros y te adecuo la macro.

Sub Acumular_Base_Con_Macro_Funciones()
With Sheets("Hoja1")
With .Range("A2")
.Formula = _
"='C:\Users\Usuario\Desktop\Nueva carpeta (9)\[libro1.xls]Hoja1'!D1"
.Value = .Value
r = .Value + 1
End With
With .Range("B2")
.Formula = _
"='C:\Users\Usuario\Desktop\Nueva carpeta (9)\[libro2.xls]Hoja1'!D1"
.Value = .Value
x = .Value + 1
End With
With .Range("C2")
.Formula = "=SUM(A2:B2)"
.Value = .Value
y = .Value + 1
End With
fin = .Range("A65536").End(xlUp).Row
If fin > 1 Then
With .Range("A2:C" & fin)
.ClearContents
.ClearFormats
End With
End If
With .Range("A2:C" & r)
.Formula = _
"='C:\Users\Usuario\Desktop\Nueva carpeta (9)\[libro1.xls]Hoja1'!A2"
.Value = .Value
End With
With .Range("A" & r + 1 & ":C" & y)
.Formula = _
"='C:\Users\Usuario\Desktop\Nueva carpeta (9)\[libro2.xls]Hoja1'!A2"
.Value = .Value
End With
End With
End Sub
[/CODE]

Prueba y comentas.

Atte.

joshua

publicado

hola! gracias por ayudarme! ya consegui lo que queria pero aun hay algo q me falta. cuando lo hago con office 2007 sin problema pero cuando lo hago con 2002 cada vez q cierra un archivo pide guardar cambios o no... y lo tengo q hacer 15 veces jajajaj darle a no. hay alguna forma de que no me pregunte? como lo de forzar cierre o que pulse el solo que no? gracias!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.