Buscar en otros libros (II)

11/05/2006 - 10:21 por pacomar | Informe spam
Buenos días grupo.

En una consulta anterior, resuelta perfectamente por Héctor,
preguntaba por la manera de buscar y extraer datos de libros de excel
cerrados donde la información a extraer estaba en las columnas b e i
de las hojas que componen cada libro. Tratamos de saber los consumos
telefónicos de las extensiones de una centralita, por lo que hay que
buscar en todos los libros guardados en un directorio, el nombre de la
hoja que coincida con la extensión (ejemplo: 27002).
Esto se hacía perfectamente con este código:

en un modulo de codigo 'normal' -> EN el libro "facturacion telef"
==Sub Busca_Suma_Extensiones(): Application.ScreenUpdating = False
Dim Ruta As String, Hoja As String, Libro As String, _
Condicion As String, Celda As Range, Prueba
Ruta = "c:\centralita\abril\"
With Worksheets("administrador")
For Each Celda In .Range(.Range("b2"), .Range("b65536").End(xlUp))
Libro = Dir(Ruta & "*.xls"): Hoja = Celda
Do While Libro <> "": Condicion = "'" & Ruta & "[" & Libro & "]"
& Hoja & "'!"
On Error Resume Next: Prueba = ExecuteExcel4Macro(Condicion &
"r1c1")
If Not IsError(Prueba) Then
Celda.Offset(, 2).Formula = "=sum(" & Condicion & "i:i)"
Celda.Offset(, 2) = Celda.Offset(, 2)
Exit Do
End If: Libro = Dir(): Loop: Next: End With
End Sub

Pero, a consecuencia del cambio de soft de la centralita, ahora resulta
que la forma de
presentar los datos ha cambiado. Antes eran varios libros con varias
hojas en cada uno de ellos, donde el nombre de la hoja se correspondía
con en nº de extensión (ejemplo: 27002). Ahora la nueva versión
sólo entrega un libro (ejemplo: 01_05_06.xls), con una sóla hoja:
Hoja1, donde en la columna B está el nº de extensión (antes también
estaba en el nombre de la hoja) y en la columna i el importe de lo
consumido (esto no ha variado).

¿Se puede modificar el código anterior para adecuarlo a este nuevo
procedimiento?

Saludos y gracias.

Paco.

Preguntas similare

Leer las respuestas

#6 pacomar
17/05/2006 - 11:59 | Informe spam
Muy buenas Héctor.

La última modificación en la fórmula de búsqueda funcionó a las
mil maravillas como ya te dije. Tal como la tenemos, me obliga a
cambiar la ruta: "c:\centralita\abril\ " cada mes, ya que quisiera
guardar los ficheros originales que entrega el sistema en carpetas
distintas.

¿Se podría intercalar un msgbox que pregunte el mes a facturar y lo
incluya en la ruta?, en este caso "abril"?

Sub Busca_Suma_Extensiones(): Application.ScreenUpdating = False
Dim Ruta As String, Hoja As String, Libro As String, Base As String,
Fila As Integer
Ruta = "c:\centralita\abril\"
Libro = "01_05_06.xls"
Hoja = "hoja1"
Base = "'[" & Libro & "]" & Hoja & "'!"
Workbooks.Open Ruta & Libro
ThisWorkbook.Activate
With Worksheets("administrador")
For Fila = 2 To .Range("b65536").End(xlUp).Row
.Range("d" & Fila).Formula = _
"=sumif(" & Base & "b:b,b" & Fila & "," & Base & "i:i)"
.Range("d" & Fila) = .Range("d" & Fila)
Next
End With
Workbooks(Libro).Close False
End Sub

Gracias y un afectuoso saludo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida