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

#11 Francisco Parrilla
24/08/2006 - 06:06 | Informe spam
en el foro version ingles se expuso este codigo en caso de tener todos los
libros abiertos :)

Sub CopySheets()
Dim bk As Workbook, bk1 As Workbook
Set bk = Workbooks.Add()
For Each bk1 In Application.Workbooks
If bk1.Windows(1).Visible Then
Application.DisplayAlerts = False
bk1.Worksheets.Copy After:=bk.Worksheets(bk.Worksheets.Count)
Application.DisplayAlerts = True
End If
Next
End Sub

no lo he probado asi que suerte :)

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
#12 icar
24/08/2006 - 08:02 | Informe spam
Gracis Ivan.

"Ivan" escribió:

Hola icar/javier

Por lo que creo entender deberia valerte una de las macros que te envie
en el anterior post, aunque deberias llamar a la macro desde cada libro
que desees traspasar. Otra opcion supongo que seria llamar a una macro
(otra) desde el libro de destino (presutotal.xls) que recorriera todos
los archivos de un determinado directorio y los fuera "copiando" en el
libro. Esto no he tenido tiempo de intentarlo pero no creo que sea
complicado. aunque implicaria que , dado que parece que quieres
mantener los libros de origen, deberias moverloss a otro directorio
tras traspasr los datos (¿o por mantener la estructura te refieres a
borrar los datos tras el traspaso de estos al libro "presutotal" pero
mantener los encabezados, formulas, formatos, etc.?, si es asi quizas
la hoja de origen deberia ser una plantilla y al cerrar el libro, tras
traspasar los datos, no guardarlo)

En cualquier caso, y aunque no acabo de tener claro el planteamiento,
creo que una opcion bastante comoda seria que al acabar de trabajar con
el libro que quieres traspasar, simplemente le dieras al boton al que
le hayas asignado la macro que mejor se corresponda con tus intenciones
(tampoco acabo de tenerlo claro) y automaticamente el contenido de
dicha hoja se copiaria en "presutotal" con las mismas caracteristicas
que tenga la hoja de origen, y esta se mantendria tal cual, sin sufrir
cambios.

Por si acaso te explico como funcionan cada una de las macros que te
envie:

A la vez, y como no se el nivel en que te mueves, te (intento) explico
mas o menos como asignar la macro a un boton:

Abre el editor de VBA (Alt + F11) y en el cuadro -> 'Explorador de
proyectos' (normalmente esta a la izq) seleccionas -> 'VBA
project(PERSONAL)' que es el libro de macros personal ( si no esta,
consulta en el foro como abrirlo -creo que esta en la carpeta XLSTART-
porque yo no se muy bien como hacerlo).
Luego -> menu Insertar -> Modulo.

En el modulo en blanco que se abre pegas el codigo que responda a tus
necesidades:

el 1º solo pega los datos, formulas y formato -sin encabezados, pues
se supone que los del libro "presutotal" son iguales que los de todas
las hojas que vayas a pegar- a continuacion de los que ya existan en el
libro, creando una lista continua con los datos de todos los libros y
con un solo encabezado.

Y el 2º pega la hoja completa con encabezados y todo lo que tengas,
dejando una fila en blanco entre cada hoja que pegues, para que excel
los considere listas diferentes, aunque esten en el mismo libro.

A continuacion desde excel:

-> Herramientas -> Personalizar -> Comandos
-> En el cuadro de la izq. seleccionas -> Macros y del de la dcha
arrastras -> 'Personalizar boton' hasta una barra de herramientas y
cierras el cuadro de dialogo

Despues -> con el boton dcho del raton sobre la imagen del boton eliges
-> Personalizar -> Asignar macro -> y buscas la macro correspondiente.

Ahora, en teoria, al clicar sobre el boton, el contenido de todas las
hojas del libro activo se deberia traspasar al libro "presu"(esto
deberias cambiarlo por el nombre que se corresponda) sin que el libro
activo sufra cambios.

Disculpa todo este rollo y espero que se me haya entendido algo.

NOTA: sustituye en el codigo que elijas la siguiente linea:

LibroOrigen = ActiveWorkbook.Name

por:

With ActiveWorkbook
If .Name="presu.xls" Then
Exit Sub
Else
LibroOrigen = .Name
End If
End With

***RECUERDA cambiar "presu.xls" por el verdadero nombre del libro de
destino, asi como el nombre de la hoja de destino ("presu" en el ej)

Espero que te sirva de algo

Un saludo y hasta pronto
Ivan


Respuesta Responder a este mensaje
#13 icar
24/08/2006 - 08:02 | Informe spam
Gracis por todo

"Francisco Parrilla" escribió:

Baja este archivo de un servidor y ve si es mas o menos lo que buscas :)

http://mx.geocities.com/gozalo_ya/SheetsMerge.xls

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



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