Como puedo copiar a datos de una hoja a otro libro

12/10/2007 - 22:23 por MGL19DF | Informe spam
Hola Buen dia

Gracias a todos en especial a Abraham por la solucion que me dio el
otro dia a un problema que tenia, pero ahora tengo otro y a este si
nisiquiera le encuentro solucion. (y creo yo que es mas facil que el
de el otro dia)

Que codigo puedo utilizar para hacer lo siguiente:

tengo una carpeta con Varios libros, cada uno tiene varias hojas, de
las cuales necesito sacar informacion de un arango de hojas variable
de las columnas A,D,F,G,H,I, pero no todas las columnas tiene la misma
informacion y la misma longitud, hay columnas mas cortas y otras mas
largas.

De estos libros necesito sacar cada semana la informacion de esas
hojas y esa informacion copiarla a otro libro que tiene una hoja por
cada libro contenido en la carpeta anterior.

Pero necesito copiar todo el contenido del rango de hojas y el rango
de datos a una hoja cada dato copiado de la hoja, seguido de la otra
hoja ej.

hoja zamba en librro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx

hoja zigma en libro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
hoja nijna en libro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
etc

seleccionar solo las columnas 1, 3, 6

y pegar hasta la primer celda vacia de cada columna en:

libro general

hoja libro1
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

etc

si alguein tene una solucion, se los agradecere infinitamente, ya que
este problema me ha tenido frustrado las ultimas 2 semanas...

saludos

Preguntas similare

Leer las respuestas

#1 Ivan
13/10/2007 - 03:18 | Informe spam
hola,

aunque no acabo de tener claro si te he entendido bien, mira a ver si lo que quieres se acerca a lo siguiente:

pega los codigos en un modulo normal, sigue los requisitos/prevenciones comentados [ y prueba con copias]

op1) si ya tienes las hojas con los nombres de los libros

:-> carga en las hojas [del libro que contiene la macro] cuyo nombre coincide con el cada libro [contenido en la carpeta
especificada en TuRuta] las columnas 1,3 y 6 de todas las hojas de este,

OJO no incluye tratamiento de errores, pej si un libro no tiene su hoja correspondiente (podrias hacer una combinacion
con el 2º codigo que te pongo

se supone que la columna a va a ser siempre mayor o igual de larga que el resto

CAMBIA en la variable 'TuRuta' el contenido por la ruta completa [incluida la ultima barra] a la carpeta contenedora
'
Sub CargarLibrosEnHojasExistentes()
Dim TuRuta As String, TuNombre As String, _
i As Long, n As Byte, hj As Worksheet
Application.ScreenUpdating = False
TuRuta = "C:\Documents and Settings\Ivan\" & _
"Mis documentos\TuCarpeta\"
TuNombre = Dir(TuRuta & "*.xls")
Do While TuNombre <> ""
If TuNombre <> ThisWorkbook.Name Then
Workbooks.Open TuRuta & TuNombre
With ThisWorkbookWorksheets(TuNombre)
For Each hj In Workbooks(TuNombre).Worksheets
If .[a1] = "" Then i = 1 Else _
i = .[a65536].End(xlUp).Row + 2
.Cells(i, 1) = hj.Name
n = hj.[a65536].End(xlUp).Row
hj.Range("a1:a" & n & ",c1:c" & n & ",f1:f" & n) _
.Copy .Cells(i + 2, 1)
Next
End With
Application.DisplayAlerts = False
Workbooks(TuNombre).Close False
Application.DisplayAlerts = True
End If
TuNombre = Dir
Loop
End Sub

op2) crea una nueva hoja con el nombre de cada libo y carga en ella todas las hojas de cada uno

basicamente lo mismo que en el anterior, aunque aqui debes asegurarte de que los nombres de los libros son nombres
validos para una hoja y de que no existen hojas ya con el mismo nombre

puedes / deebes prevenir varias posibilidades de error. Posiblemente lo mejor seria combinar ambos codigos

Sub CargarLibrosEnHojasNuevas()
Dim TuRuta As String, TuNombre As String, _
i As Integer, n As Byte, hj As Worksheet
Application.ScreenUpdating = False
TuRuta = "C:\Documents and Settings\Ivan\" & _
"Mis documentos\TuCarpeta\"
TuNombre = Dir(TuRuta & "*.xls")
Do While TuNombre <> ""
If TuNombre <> ThisWorkbook.Name Then
Workbooks.Open TuRuta & TuNombre
With ThisWorkbook
.Worksheets.Add after:=.Worksheets(.Worksheets.Count)
With .Worksheets(.Worksheets.Count)
.Name = TuNombre
For Each hj In Workbooks(TuNombre).Worksheets
If .[a1] = "" Then i = 1 Else _
i = .[a65536].End(xlUp).Row + 2
.Cells(i, 1) = hj.Name
n = hj.[a65536].End(xlUp).Row
hj.Range("a1:a" & n & ",c1:c" & n & ",f1:f" & n) _
.Copy .Cells(i + 2, 1)
Next
End With
End With
Application.DisplayAlerts = False
Workbooks(TuNombre).Close False
Application.DisplayAlerts = True
End If
TuNombre = Dir
Loop
End Sub

espero te valga y si quieres comentas

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Héctor Miguel
15/10/2007 - 01:37 | Informe spam
hola, 'anonimo/a' !

Que codigo puedo utilizar para hacer lo siguiente:
tengo una carpeta con Varios libros, cada uno tiene varias hojas
de las cuales necesito sacar informacion de un arango de hojas variable de las columnas A,D,F,G,H,I
pero no todas las columnas tiene la misma informacion y la misma longitud, hay columnas mas cortas y otras mas largas



en tanto comentas algo mas... "entendible" y uno que otro detalle como "la carpeta" y los "varios libros" y las "varias hojas"...
(de manera que no se tenga que suponer/adivinar/inventar/... cualquier cosa que no se pudo ver desde este lado del mensaje)...
revisa/adapta/modifica/complementa/... ejemplos como los de las siguientes direcciones:

Merge data from all workbooks in a folder(Dir)
http://www.rondebruin.nl/copy3.htm
Merge data from all workbooks in a folder(FSO)
http://www.rondebruin.nl/fso.htm
Merge data from all workbooks in a folder: Add-in
http://www.rondebruin.nl/merge.htm

si cualquier duda (o requieres de ayuda mas... "precisa")... comentas ?
saludos,
hector.

__ el resto de la consulta __
De estos libros necesito sacar cada semana la informacion de esas hojas
y esa informacion copiarla a otro libro que tiene una hoja por cada libro contenido en la carpeta anterior.
... copiar todo el contenido del rango de hojas y el rango de datos a una hoja cada dato copiado de la hoja, seguido de la otra hoja ej.
hoja zamba en librro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx

hoja zigma en libro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx

hoja nijna en libro 1
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
xxxxxx xxxxxxx xxxxxxx xxxxxxx xxxxxx
etc

seleccionar solo las columnas 1, 3, 6 y pegar hasta la primer celda vacia de cada columna en:

libro general

hoja libro1
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx
xxxxxx xxxxxxx

etc

si alguein tene una solucion, se los agradecere infinitamente
ya que este problema me ha tenido frustrado las ultimas 2 semanas...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida