Facturación, vía base de datos con excel

Mi problema es que tengo que hacer más de 300 facturas, de lo cual ya cree una base de datos con toda la información que necesita llevar la factura(fecha, monto, tax)el problema es que no puedo diseñar una macro que valla a la base de datos traiga información e imprima, y así consecutivamente hasta terminar las 300 facturas.

1 respuesta

Respuesta
2
Si tienes una hoja con la base de datos, y tus conceptos son las columnas y las filas son cada factura (en caso contrario haz todo al revés) te recomiendo que inicies tu base de datos con una columna que contenga un consecutivo (o puedes usar el número de factura, sólo fíjate). Toda esta tabla (SIN los títulos) la marcas y nombras (dando doble click a la izquierda de la barra de fórmula, en donde aparece la celda donde está el cursor) por ejemplo "datos".
En esta misma hoja, toma una celda ej AA3 y ponle "1".
Luego en otra hoja haces tu formato de salida para que imprima tu factura, y en los campos donde tengas que traer un dato de la tabla, ponle =buscarv('hoja de datos'! $AA$3, datos,#) donde la celda AA3 es donde pusiste el uno, datos es el nombre que le diste a la tabla (sin títulos y ordenada por el consecutivo, ascendentemente) y # es el número de columnas desde la del consecutivo hasta la del dato que quieres, inclusive, por ejemplo si el consecutivo está en "A" y el nombre del cliente en "D" debes poner 4.
¿Cuándo tengas esto verás que tu factura está lista para imprimir el primer registro, pero si cambias aquél uno por cinco, presentará la quinta factura, ok?
Para que imprima todas pega el siguiente código en un módulo: (cambia los nombres de las hojas por los tuyos, y las referencias a las celdas A1 es tu primer número consecutivo o de factura, AA3 donde está el controlador)
Sub imprimir()
'
' imprimir Macro
' Macro grabada el 15/10/2002 por Eduardo Marañón
'
'
Sheets("Tabla").Select
Range("d2").Select
renglon = 0
While ActiveCell.Value <> ""
Range("AA3").Select
registro = ActiveCell.FormulaR1C1
Sheets("Factura").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Tabla").Select
Range("AA3").Select
registro = registro + 1
ActiveCell.Value = registro
renglon = renglon + 1
Range("d2").Select
ActiveCell.Offset(renglon, 0).Select
Wend
End Sub
En mi macro puse en la columna DE el número consecutivo, tú usa la A, o ajusta de acuerdo a lo que te comenté en el anterior

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas