crear hoja excel a partir de varias ficheros xls diferentes

22/08/2006 - 21:05 por icar | Informe spam
como puedo crear una hoja de calculo partiendo de un numero indeterminado de
ficheros xls con una determinada estructura.

Preguntas similare

Leer las respuestas

#1 Francisco Parrilla
22/08/2006 - 22:12 | Informe spam
"como puedo crear una hoja de calculo partiendo de un numero indeterminado
de ficheros xls con una determinada estructura."
Te refieres a una sola hoja con el contenido de todos los archivos ?

Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
pared, el ignorante permanece tranquilo en el centro de la estancia.
Anatole France
Respuesta Responder a este mensaje
#2 icar
22/08/2006 - 22:35 | Informe spam
si por ejemplo presu1.xls presu2.xls meterlo en presu.xls


"Francisco Parrilla" escribió:

"como puedo crear una hoja de calculo partiendo de un numero indeterminado
de ficheros xls con una determinada estructura."
Te refieres a una sola hoja con el contenido de todos los archivos ?

Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
pared, el ignorante permanece tranquilo en el centro de la estancia.
Anatole France



Respuesta Responder a este mensaje
#3 icar
22/08/2006 - 22:41 | Informe spam
puntualizo meterlo con una estructura determinadacada hoja de calculo y
mediante programacion no copiar y pegar.

saludos javier

"icar" escribió:

si por ejemplo presu1.xls presu2.xls meterlo en presu.xls


"Francisco Parrilla" escribió:

> "como puedo crear una hoja de calculo partiendo de un numero indeterminado
> de ficheros xls con una determinada estructura."
> Te refieres a una sola hoja con el contenido de todos los archivos ?
>
> Atte.
> ?T Francisco T?
> http://groups.msn.com/ExcelVbaMacrosOffice
>
> El verdadero buscador crece y aprende, y descubre que siempre es el
> principal responsable de lo que sucede.
> Jorge Bucay
>
> La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
> pared, el ignorante permanece tranquilo en el centro de la estancia.
> Anatole France
>
>
>
Respuesta Responder a este mensaje
#4 Ivan
23/08/2006 - 02:52 | Informe spam
Hola icar

No estoy muy seguro de si es esto lo que buscas, pero mira a ver si te
vale.

Creo entender que quieres traspasar los datos contenidos en
determinados libros a uno solo. Si es asi, he "supuesto" dos
"supuestos":

1ª .- que en el libro 'almacen' tienes unos encabezados comunes a
todos los libros y que solo quieres adjuntar las filas con los datos
(sin encabezamientos) a continuacion de las que ya existan en el libro.
Para este caso creo que podria valerte algo parecido a esto:

Sub AgregarHoja()
Dim LibroOrigen As String
Dim ws As Worksheet, rngPresu As Range
LibroOrigen = ActiveWorkbook.Name
With Application
.ScreenUpdating = False: .DisplayAlerts = False
On Error Resume Next
Workbooks.Open Filename:="presu.xls "
On Error GoTo 0
.DisplayAlerts = True
With Workbooks("presu")
With .Worksheets("presu")
If .[a2] = "" Then
Set rngPresu = .[a2]
Else
Set rngPresu = .Range("a" & .UsedRange.Rows.Count + 1)
End If
For Each ws In Workbooks(LibroOrigen).Worksheets
ws.UsedRange.Copy rngPresu
rngPresu.EntireRow.Delete 'es una chapuza para eliminar _
' la fila de encabezamientos de la hoja 'origen'
Set rngPresu = .Range("a" & .UsedRange.Rows.Count + 1)
Next
End With
.Save: .Close 'si no quieres cerrar el libro elimina -><: .close>
End With
Set rngPresu = Nothing
Set ws = Nothing
.ScreenUpdating = True
End With
End Sub

2º .- que quieres adjuntar la hoja completa (encabezados incluidos) y
que no tiene que ser coincidente con los(posibles) encabezados de la
hoja 'almacen'. En este caso podrias usar algo parecido a esto (el
codigo deja una fila vacia entre cada hoja adjuntada para que puedas
trabajarla como una lista independiente):

Sub AgregarHoja()
Dim LibroOrigen As String
Dim ws As Worksheet, rngPresu As Range
LibroOrigen = ActiveWorkbook.Name
With Application
.ScreenUpdating = False: .DisplayAlerts = False
On Error Resume Next
Workbooks.Open Filename:="presu.xls "
On Error GoTo 0
.DisplayAlerts = True
With Workbooks("presu")
With .Worksheets("presu")
If .[a1] = "" Then
Set rngPresu = .[a1]
Else
Set rngPresu = .Range("a" & .UsedRange.Rows.Count + 2)
End If
For Each ws In Workbooks(LibroOrigen).Worksheets
ws.UsedRange.Copy rngPresu
Set rngPresu = .Range("a" & .UsedRange.Rows.Count + 2)
Next
End With
.Save: .Close 'si no quieres cerrar el libro elimina -><: .close>
End With
Set rngPresu = Nothing
Set ws = Nothing
.ScreenUpdating = True
End With
End Sub

En ambos casos se supone que quieres adjuntar todas las hojas de libro
'origen'. Ten cuidado si hay hojas vacias o si no quieres adjuntar
todas. Habria que realizar algunos cambios.

Puedes copiar los codigos en el libro de macros personal (editor vba:
alt+f11) y asignarselas a un boton. Ojo al nombre del libro 'almacen'
("presu" en el ejemplo).

Por ultimo avisarte que no soy muy ducho en estas lides y que vayas con
cuidado (prueba con copias), y recomendarte que lo adaptes a tus
necesidades si es que van por aqui los tiros.

Con las dudas comentas.

Un saludo y hasta pronto.
Ivan
Respuesta Responder a este mensaje
#5 Ivan
23/08/2006 - 03:27 | Informe spam
Hola Javier

Disculpame, pero solo hacer una apostilla a mi mensaje anterior.

Los dos codigos expuestos dan por hecho que tanto la hoja 'origen' como
la hoja 'almacen' tienen fila de encabezamiento/titulos y que está en
la fila 1, comenzando los datos en la fila 2. Si no fuera asi, comentas
detalles.

Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida