llamar a un libro excel desde un modulo VB

07/08/2008 - 15:23 por gongi | Informe spam
Hola Grupo!

Por favor, quiero utilizar este código para llevar un historico de mis
facturas (desgloso los cobros por cada factura) , pero el historico
esta en *otra hoja* de *otro libro*. ¿Como podría "llamar" a ese
libro, en el With ?
El código esta sacado de aquí, creo que es de Hector.

Saludos Cordiales
gongi

Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
With Worksheets("factura")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .
[b5], .[b56], .[c56], .[e56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .
[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With
With Worksheets("historico")
With .Range("a" & .Range("h" & Rows.Count).End(xlUp).Row)
'detecta la ultima entrada'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila
hasta la columan 10'
.Offset(1, 8) = n 'coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle
de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
End Sub
 

Leer las respuestas

#1 Juan M
07/08/2008 - 16:25 | Informe spam
Hola,

Para emplear los datos de otro libro tienes dos opciones,
La primera sería abrir el libro y referirte a las hojas y rangos de ese
libro, algo como esto

dim mlh as workbook
Set mlh = Workbooks.Open("miruta", ReadOnly:=True)
With mlh.Worksheets("historico")
...
End With
mlh.Close
Set mlh = Nothing

Esto podría ocasionar que si existiera un error en el código el libro
histórico quedara abierto y accesible, a menos que controles los errores y
lo cierres al detectar dicho error.

La segunda opción sería si tu libro de datos histórico tiene forma de tabla,
es decir, tiene unos encabezados y a continuación los datos.
Si esto ocurre podrías emplear ADO para extraer los datos y no tener
necesidad de abrir ese archivo.

Un saludo,
Juan



"gongi" escribió
Hola Grupo!

Por favor, quiero utilizar este código para llevar un historico de mis
facturas (desgloso los cobros por cada factura) , pero el historico
esta en *otra hoja* de *otro libro*. ¿Como podría "llamar" a ese
libro, en el With ?
El código esta sacado de aquí, creo que es de Hector.

Saludos Cordiales
gongi

Sub Historico()
Dim Generales, Cobros, n As Byte, Col As Byte
With Worksheets("factura")
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .
[b5], .[b56], .[c56], .[e56])
n = Application.Count(.[f54:f62]) 'cuenta el nº de cobros'
Cobros = Array(.[f54].Resize(n).Value, .[g54].Resize(n).Value, .
[h54].Resize(n).Value) 'Array dinamico cambia de tamaño segun n'
End With
With Worksheets("historico")
With .Range("a" & .Range("h" & Rows.Count).End(xlUp).Row)
'detecta la ultima entrada'
.Offset(1).Resize(, 10) = Generales 'llena la primera fila
hasta la columan 10'
.Offset(1, 8) = n 'coloca en contador en la ultima columa '
For Col = 0 To 2 'segun el n de columnas a llenar detalle
de cobros 3 0-1-2'
.Offset(1, 10 + Col).Resize(n) = Cobros(Col)
Next
End With
End With
End Sub

Preguntas similares