código de rescate o lectura de un registro de una base de datos o histórico

09/12/2009 - 17:33 por gongi | Informe spam
sub Historico()

'Declaracion de variables'

Dim Generales, Datos_Clientes, Cobros, n As Byte, Col As Byte
Dim Datos_Factura, Mes As String


'capturar los datos de la plantilla de liquidacion'

With Worksheets("liquidacion")
'el orden el array es el orden en el que se vuelcan el histórico'
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .
[b5], .[b56], .[c56], .[d56], .[b57], .[c57], .[d57], .[b10], .[b11], .
[b12], _
.[b8], .[b13], .[a42], .[a43], .[a44], .[a45], .[a46], .[a34], .
[a35], .[a36], .[a37], .[a38], .[a39], .[a40], .[d52], .[f34], .
[d31], .[f27], .[a27])
Datos_Factura = Array(.[b3], .[b2], .[b7], .[b8], .[d53], .
[d54], .[d55], .[b4], [b13])
Datos_Clientes = Array(.[b2], .[b4], .[b5])
n = Application.Count(.[f54:f69]) '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'

'para salvar la notación de "mes" '
Mes = Evaluate("index
({""enero"",""febrero"",""marzo"",""abril"",""mayo""," & _

"""junio"",""julio"",""agosto"",""septiembre"",""octubre""," & _
"""noviembre"",""diciembre""},month(" & .
[b3].Address(, , , 1) & "))")
'coger el año de la fecha para volcar en resumen'

Ejercicio = Year(.[b3])

End With

'volcar los datos en el historico '

With Workbooks("historico.xlsm").Worksheets("historico")

' ver si ya existe el registro comprobando b7 = numero factura'
' If Workbooks("historico").Worksheets("historico").Range
("d65536").End(xlUp) = _
Worksheets("liquidacion").Range("b7") Then MsgBox "factura ya
registrada": Exit Sub

If Workbooks("historico.xlsm").Worksheets("historico").Range
("a65536").End(xlUp) = _
Worksheets("liquidacion").Range("b2") Then MsgBox "factura ya
registrada": Exit Sub



With .[a65536].End(xlUp)
.Offset(1).Resize(, 35) = Generales 'nº de columnas del
historico, debe coincidir con el tamaño del array '
' For Col = 0 To n - 1
' .Offset(1, 10 + Col * 3).Resize(, 3).Value = _
' Worksheets("liquidacion").[f54].Offset(Col).Resize(,
3).Value
' Next
End With

End With

Por favor, grupo, se puede , por código, volver o "rescatar" de los
elementos del array Generales, que he volcado en un histórico , que
saco de la hoja aquí llamada liquidación, a esa hoja de nuevo ? .Pero
esa hoja tiene formulas ,por lo que quizás sería mejor rescatarlos a
otra hoja , con el objeto de imprimir , revisar etc ?
Muchas gracias por la ayuda
 

Leer las respuestas

#1 Héctor Miguel
09/12/2009 - 23:04 | Informe spam
hola, domingo !

Por favor, grupo, se puede, por código, volver o "rescatar" de los elementos del array Generales
que he volcado en un historico, que saco de la hoja aquí llamada liquidacion, a esa hoja de nuevo ?
Pero esa hoja tiene formulas, por lo que quizás sería mejor rescatarlos a otra hoja, con el objeto de imprimir, revisar etc ?



1) si los datos de la hoja "liquidacion" son formulas, la matriz lleva solo los valores
2) la matriz termina su trabajo al finalizar el codigo (por lo mismo, la matriz queda vacia)
3) para "rescatar" los datos (valores) que deposito la matriz, necesitas encontrar "donde" los puso (factura, ???)
4) para no echar a perder las formulas en la hoja "liquidacion" (probablemente) podrias tener un rango "auxiliar" (?)
en este rango auxiliar depositarias los "rescates" de infomacion (del historico) pero tendrias que adaptar/crecer/... "las formulas"

saludos,
hector.

__ el codigo expuesto _
sub Historico()
'Declaracion de variables'
Dim Generales, Datos_Clientes, Cobros, n As Byte, Col As Byte
Dim Datos_Factura, Mes As String
'capturar los datos de la plantilla de liquidacion'
With Worksheets("liquidacion")
'el orden el array es el orden en el que se vuelcan el histórico'
Generales = Array(.[b2], .[d53], .[d54], .[b7], .[b3], .[b4], .[b5], .[b56], .[c56], .[d56], .[b57], .[c57], .[d57], .[b10], .[b11], .[b12], _
.[b8], .[b13], .[a42], .[a43], .[a44], .[a45], .[a46], .[a34], .[a35], .[a36], .[a37], .[a38], .[a39], .[a40], .[d52], .[f34], .[d31], .[f27], .[a27])
Datos_Factura = Array(.[b3], .[b2], .[b7], .[b8], .[d53], .[d54], .[d55], .[b4], [b13])
Datos_Clientes = Array(.[b2], .[b4], .[b5])
n = Application.Count(.[f54:f69]) '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'
'para salvar la notación de "mes" '
Mes = Evaluate("index({""enero"",""febrero"",""marzo"",""abril"",""mayo""," & _
"""junio"",""julio"",""agosto"",""septiembre"",""octubre""," & _
"""noviembre"",""diciembre""},month(" & .[b3].Address(, , , 1) & "))")
'coger el año de la fecha para volcar en resumen'
Ejercicio = Year(.[b3])
End With
'volcar los datos en el historico '
With Workbooks("historico.xlsm").Worksheets("historico")
' ver si ya existe el registro comprobando b7 = numero factura'
' If Workbooks("historico").Worksheets("historico").Range("d65536").End(xlUp) = _
Worksheets("liquidacion").Range("b7") Then MsgBox "factura yaregistrada": Exit Sub
If Workbooks("historico.xlsm").Worksheets("historico").Range("a65536").End(xlUp) = _
Worksheets("liquidacion").Range("b2") Then MsgBox "factura yaregistrada": Exit Sub
With .[a65536].End(xlUp)
.Offset(1).Resize(, 35) = Generales 'nº de columnas delhistorico, debe coincidir con el tamaño del array '
' For Col = 0 To n - 1
' .Offset(1, 10 + Col * 3).Resize(, 3).Value = _
' Worksheets("liquidacion").[f54].Offset(Col).Resize(, 3).Value
' Next
End With
End With

Preguntas similares