Macro: anexar en uno varios ficheros que pueden variar sus filas

10/04/2007 - 17:46 por Vere | Informe spam
Hola.
Necesito anexar varios ficheros con la misma estructura en uno solo. Para
ello he utilizado una Macro y he ido anexando ficheros con la opción de
Obtener datos externos. El problema que tengo, haga como lo haga, es que como
los ficheros origen aumentan el número de filas, las que se van añadiendo no
las anexa ya que en la macro se refleja una celda y no la instrucción que yo
ejecuto de Ctrl+Fin. A lo mejor esta no es la manera. Os agradeceré si me
podéis echar una mano.
Gracias de antemano y salu2.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
11/04/2007 - 06:07 | Informe spam
hola, Vere 1

Necesito anexar varios ficheros con la misma estructura en uno solo.
Para ello he utilizado una Macro y he ido anexando ficheros con la opcion de Obtener datos externos.
El problema que tengo, haga como lo haga, es que como los ficheros origen aumentan el numero de filas
las que se van a#adiendo no las anexa ya que en la macro se refleja una celda
y no la instruccion que yo ejecuto de Ctrl+Fin. A lo mejor esta no es la manera...



podrias exponer la macro 'tal-cual' ya la estas usando... o probar con algo +/- como lo siguiente
suponiendo que todos tus ficheros estan cerrados y se encuentran en la misma carpeta -?-

1) copia/mueve/coloca/... tus libros en una sola carpeta [o directorio 'comun']...
2) abre un libro nuevo, y escribe en la celda 'A1' de la hoja1 la ruta elegida [p.e.] C:\Mis respaldos\Todos los libros\
- NO olvides el '\' al final :))
3) copia/pega/... las siguientes lineas en un modulo de codigo 'general' EN el proyecto de macros del libro 'nuevo'
NOTA: se asume que la hoja que se va a consolidar... -> ES la hoja (1) de cada uno de los n_ficheros...
Y [ademas y muy importante] que la ultima fila en la columna 'A' de cada hoja1 SI contiene datos -?-
de lo contrario... la 'siguiente fila libre' en el libro nuevo... va a presentar 'inconsistencias' en el resultado final :-(

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

Sub Combina_archivos_en()
Dim Archivo As String
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets(1)
Archivo = Dir(.Range("a1") & "*.xls")
Do While Archivo <> ""
Workbooks.Open .Range("a1") & Archivo
.Range("a" & Rows.Count).End(xlUp).Offset(2) = _
ActiveWorkbook.Name
ActiveWorkbook.Worksheets(1).UsedRange.Copy _
Destination:=.Range("a" & Rows.Count).End(xlUp).Offset(1)
ActiveWorkbook.Close False
Archivo = Dir()
Loop
End With
End Sub
Respuesta Responder a este mensaje
#2 Vere
14/04/2007 - 13:20 | Informe spam
Muchas gracias Héctor !!!

"Héctor Miguel" escribió:

hola, Vere 1

> Necesito anexar varios ficheros con la misma estructura en uno solo.
> Para ello he utilizado una Macro y he ido anexando ficheros con la opcion de Obtener datos externos.
> El problema que tengo, haga como lo haga, es que como los ficheros origen aumentan el numero de filas
> las que se van a#adiendo no las anexa ya que en la macro se refleja una celda
> y no la instruccion que yo ejecuto de Ctrl+Fin. A lo mejor esta no es la manera...

podrias exponer la macro 'tal-cual' ya la estas usando... o probar con algo +/- como lo siguiente
suponiendo que todos tus ficheros estan cerrados y se encuentran en la misma carpeta -?-

1) copia/mueve/coloca/... tus libros en una sola carpeta [o directorio 'comun']...
2) abre un libro nuevo, y escribe en la celda 'A1' de la hoja1 la ruta elegida [p.e.] C:\Mis respaldos\Todos los libros\
- NO olvides el '\' al final :))
3) copia/pega/... las siguientes lineas en un modulo de codigo 'general' EN el proyecto de macros del libro 'nuevo'
NOTA: se asume que la hoja que se va a consolidar... -> ES la hoja (1) de cada uno de los n_ficheros...
Y [ademas y muy importante] que la ultima fila en la columna 'A' de cada hoja1 SI contiene datos -?-
de lo contrario... la 'siguiente fila libre' en el libro nuevo... va a presentar 'inconsistencias' en el resultado final :-(

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

Sub Combina_archivos_en()
Dim Archivo As String
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets(1)
Archivo = Dir(.Range("a1") & "*.xls")
Do While Archivo <> ""
Workbooks.Open .Range("a1") & Archivo
.Range("a" & Rows.Count).End(xlUp).Offset(2) = _
ActiveWorkbook.Name
ActiveWorkbook.Worksheets(1).UsedRange.Copy _
Destination:=.Range("a" & Rows.Count).End(xlUp).Offset(1)
ActiveWorkbook.Close False
Archivo = Dir()
Loop
End With
End Sub



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