Consolidación de archivos de Excel.

27/10/2007 - 06:57 por Cebreros | Informe spam
Hola a todos:
Quien podría ayudarme con lo siguiente: En Excel 2003 hago una consolidación
de todos mis archivos de Excel de determinada carpeta en otro archivo de
Excel y funciona de maravilla, pero ahora que aplico lo mismo en Excel 2007,
ya no funciona el código como debería. Les envío el código como lo tengo y
espero puedan ayudarme.
Gracias: Guillermo.
Sub ConsolidarSlds()
'
' ConsolidarSlds Macro
' Macro grabada el 08/09/2002 por Guillermo Cebreros Sierra
'
' Acceso directo: CTRL+t
'
Dim miSaldo As Excel.Application

On Error Resume Next
With miSaldo
Dim miHoja As Worksheet
Set miHoja = Worksheets.Add
ChDir "C:\Cebreros\ExpeDiente\Estados de Cuenta"
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("Consolidar Saldos").Delete
miHoja.Name = "Consolidar Saldos"

Range("A1").Select
Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cuenta"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Paciente"
Range("A1").Select
Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True,
Font:= _
True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
End With

On Error Resume Next
With miSaldo
Dim miHoja2 As Worksheet
Set miHoja2 = Worksheets.Add
ChDir "\\Clínica\C\Cebreros\ExpeDiente\Estados de Cuenta"
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("Consolidar Saldos").Delete
miHoja2.Name = "Consolidar Saldos"

Range("A1").Select
Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cuenta"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Paciente"
Range("A1").Select
Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True,
Font:= _
True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
End With
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/10/2007 - 21:51 | Informe spam
hola, Guillermo !

En Excel 2003 hago una consolidacion de... archivos... de determinada carpeta... y funciona de maravilla
pero ahora... en Excel 2007, ya no funciona el codigo como deberia. Les envio el codigo como lo tengo ...



1) seria conveniente si comentas (+/- exactamente) los detalles del "... ya no funciona como deberia... " -?-
para lo cual, necesitaras eliminar (o "comentar") las lineas con la instruccion: -> On Error Resume Next

nota: esta instruccion SOLO la "deberias" utilizas si conoces el error que pudiera presentarse en tiempo de ejecucion
y volver a habilitar la deteccion de errores en la siguiente linea a aquella donde "podria" presentarse la condicion de error

2) vuelve a ejecutar la macro en 2007, y comentas los mensajes de error y las lineas que los causan ?

saludos,
hector.

__ el codigo expuesto __
Sub ConsolidarSlds()
Dim miSaldo As Excel.Application
On Error Resume Next
With miSaldo
Dim miHoja As Worksheet
Set miHoja = Worksheets.Add
ChDir "C:\Cebreros\ExpeDiente\Estados de Cuenta"
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("Consolidar Saldos").Delete
miHoja.Name = "Consolidar Saldos"
Range("A1").Select
Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cuenta"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Paciente"
Range("A1").Select
Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font:= _
True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
End With
On Error Resume Next
With miSaldo
Dim miHoja2 As Worksheet
Set miHoja2 = Worksheets.Add
ChDir "\\Clínica\C\Cebreros\ExpeDiente\Estados de Cuenta"
Application.DisplayAlerts = False
On Error Resume Next
Worksheets("Consolidar Saldos").Delete
miHoja2.Name = "Consolidar Saldos"
Range("A1").Select
Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("A1").Select
ActiveCell.FormulaR1C1 = "Cuenta"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Paciente"
Range("A1").Select
Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font:= _
True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
End With
End Sub
Respuesta Responder a este mensaje
#2 Cebreros
27/10/2007 - 22:51 | Informe spam
Gracias Héctor, intentaré lo que mencionas y luego te comento. bye

"Héctor Miguel" escribió:

hola, Guillermo !

> En Excel 2003 hago una consolidacion de... archivos... de determinada carpeta... y funciona de maravilla
> pero ahora... en Excel 2007, ya no funciona el codigo como deberia. Les envio el codigo como lo tengo ...

1) seria conveniente si comentas (+/- exactamente) los detalles del "... ya no funciona como deberia... " -?-
para lo cual, necesitaras eliminar (o "comentar") las lineas con la instruccion: -> On Error Resume Next

nota: esta instruccion SOLO la "deberias" utilizas si conoces el error que pudiera presentarse en tiempo de ejecucion
y volver a habilitar la deteccion de errores en la siguiente linea a aquella donde "podria" presentarse la condicion de error

2) vuelve a ejecutar la macro en 2007, y comentas los mensajes de error y las lineas que los causan ?

saludos,
hector.

__ el codigo expuesto __
> Sub ConsolidarSlds()
> Dim miSaldo As Excel.Application
> On Error Resume Next
> With miSaldo
> Dim miHoja As Worksheet
> Set miHoja = Worksheets.Add
> ChDir "C:\Cebreros\ExpeDiente\Estados de Cuenta"
> Application.DisplayAlerts = False
> On Error Resume Next
> Worksheets("Consolidar Saldos").Delete
> miHoja.Name = "Consolidar Saldos"
> Range("A1").Select
> Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
> xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
> Columns("A:A").EntireColumn.AutoFit
> Columns("B:B").EntireColumn.AutoFit
> Range("A1").Select
> ActiveCell.FormulaR1C1 = "Cuenta"
> Range("B1").Select
> ActiveCell.FormulaR1C1 = "Paciente"
> Range("A1").Select
> Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font:= _
> True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
> End With
> On Error Resume Next
> With miSaldo
> Dim miHoja2 As Worksheet
> Set miHoja2 = Worksheets.Add
> ChDir "\\Clínica\C\Cebreros\ExpeDiente\Estados de Cuenta"
> Application.DisplayAlerts = False
> On Error Resume Next
> Worksheets("Consolidar Saldos").Delete
> miHoja2.Name = "Consolidar Saldos"
> Range("A1").Select
> Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2", Function:= _
> xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
> Columns("A:A").EntireColumn.AutoFit
> Columns("B:B").EntireColumn.AutoFit
> Range("A1").Select
> ActiveCell.FormulaR1C1 = "Cuenta"
> Range("B1").Select
> ActiveCell.FormulaR1C1 = "Paciente"
> Range("A1").Select
> Selection.AutoFormat Format:=xlRangeAutoFormatList1, Number:=True, Font:= _
> True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
> End With
> End Sub



Respuesta Responder a este mensaje
#3 Cebreros
28/10/2007 - 04:05 | Informe spam
He realizado lo que me comentaste Héctor, en sí todo el código funciona
cuando los archivos a consolidar están abiertos, sin embargo, cuando están
cerrados al ejecutarse la siguiente línea:

Selection.Consolidate Sources:="'[*.xlsm]Saldos'!R4C1:R10C2", Function:=
xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True

sale el siguiente mensaje:

Se ha producido el error '-2147417848(80010108)' en tiempo de ejecución:
Error de automatización.

Cosa que en Excel 2003, Xp, 2000 e incluso Excel 97, nunca había salido.

El resto del código funciona correctamente.

Guillermo.
Respuesta Responder a este mensaje
#4 Héctor Miguel
28/10/2007 - 04:32 | Informe spam
hola, Guillermo !

1) los errores de tipo "-2147xxxx" significan que el objeto/proveedor/... al que se esta llamando NO esta "disponible"
es muy probable (casi-casi seguro) que se deba a lo siguiente:

2) hay una "ligera" diferencia entre el codigo que expusiste originalmente y el que expones ahora (concretamente)...
antes: -> Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2" ...
ahora: -> Selection.Consolidate Sources:="'[*.xlsm]Saldos'!R4C1:R10C2" ...
(por lo tanto) "decide" si los libros que se van a consolidar tienen EXTension:
- ".xls" <= libros generados en versiones previas a 2007
- ".xlsm" <= libros generados en la version 2007 Y "habilitados para macros"

3) en tus pruebas (en 2007) no era posible "ver" la causa del error por el (ab)uso de instrucciones On Error Resume Next
OJO: aun ahora, (creo que) hay una instruccion para no mostrar las alertas: -> Application.DisplayAlerts = False -???-

4) por si las dudas... he corrido pruebas (en 2007) y el metodo sigue funcionando (como en las versiones anteriores)
=> SIN abrir los libros que se van a consolidar ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
He realizado lo que me comentaste... en si todo el codigo funciona cuando los archivos a consolidar estan abiertos
sin embargo, cuando estan cerrados al ejecutarse la siguiente linea:
Selection.Consolidate Sources:="'[*.xlsm]Saldos'!R4C1:R10C2", Function:= xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
sale el siguiente mensaje:
Se ha producido el error '-2147417848(80010108)' en tiempo de ejecucion:
Error de automatizacion.
Cosa que en Excel 2003, Xp, 2000 e incluso Excel 97, nunca habia salido.
El resto del codigo funciona correctamente.
Respuesta Responder a este mensaje
#5 Cebreros
28/10/2007 - 07:14 | Informe spam
Gracias Héctor por tu apoyo. Efectivamente has notado que ahora los libros a
consolidar son en libros generados en la version 2007 Y habilitados para
macros “.xlsm”, lo curioso es que lo he intentado utilizando el grabador de
macros consolidando un archivo abierto y funciona perfectamente, más sin
embargo una vez que cierro el archivo consolidado, el grabador de marcros
tampoco logra consolidar dicho archivo. Inicialmente te mandé el código de
las versiones anteriores de Excel “.xls” por comodidad al copiarlo, pero la
intención y la decisión es consolidar archivos “.xlsm”, los cuales sí
existen en la carpeta a consolidar. He revisado paso a paso el código y tanto
el anterior como el resto del código funciona bien, sobre todo cuando el
archivo a consolidar está abierto.
Saludos:
Guillermo.


"Héctor Miguel" escribió:

hola, Guillermo !

1) los errores de tipo "-2147xxxx" significan que el objeto/proveedor/... al que se esta llamando NO esta "disponible"
es muy probable (casi-casi seguro) que se deba a lo siguiente:

2) hay una "ligera" diferencia entre el codigo que expusiste originalmente y el que expones ahora (concretamente)...
antes: -> Selection.Consolidate Sources:="'[*.xls]Saldos'!R4C1:R10C2" ...
ahora: -> Selection.Consolidate Sources:="'[*.xlsm]Saldos'!R4C1:R10C2" ...
(por lo tanto) "decide" si los libros que se van a consolidar tienen EXTension:
- ".xls" <= libros generados en versiones previas a 2007
- ".xlsm" <= libros generados en la version 2007 Y "habilitados para macros"

3) en tus pruebas (en 2007) no era posible "ver" la causa del error por el (ab)uso de instrucciones On Error Resume Next
OJO: aun ahora, (creo que) hay una instruccion para no mostrar las alertas: -> Application.DisplayAlerts = False -???-

4) por si las dudas... he corrido pruebas (en 2007) y el metodo sigue funcionando (como en las versiones anteriores)
=> SIN abrir los libros que se van a consolidar ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
> He realizado lo que me comentaste... en si todo el codigo funciona cuando los archivos a consolidar estan abiertos
> sin embargo, cuando estan cerrados al ejecutarse la siguiente linea:
> Selection.Consolidate Sources:="'[*.xlsm]Saldos'!R4C1:R10C2", Function:= xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=True
> sale el siguiente mensaje:
> Se ha producido el error '-2147417848(80010108)' en tiempo de ejecucion:
> Error de automatizacion.
> Cosa que en Excel 2003, Xp, 2000 e incluso Excel 97, nunca habia salido.
> El resto del codigo funciona correctamente.



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida