Alimentar base de datos según datos del formato

Tengo un formato llamado "registro", necesito que cuando
termine de digitar todos los campo y le vaya a dar click a un botón que
tengo para imprimir, me asigne un numerador automático, me imprima, me
guarde el archivo en PDF en otra carpeta, me alimente una
base de datos que se llame consolidado y luego me deje el formato en blanco
La macro que tengo hasta el momento es la siguiente:

Sub Imagen_Haga_clic_en()
Sheets("APROVECHAMIENTO").Select
Range("A1").Select
Range("M1").Value = Range("M1").Value + 1
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveSheet.ExportAsFixedFormat
Type:=xlTypePDF, Filename:="C:\Users\LCCJV\Documents\Liga Contra El
Cáncer Seccional Huila\Aprovechamiento\ Acta AP No. " &
Range("M2").Value
End Sub

Me falta que me alimente la base de datos y me deje el formato en blanco.

Agradezco al experto que me pueda ayudar en el tema.

1 respuesta

Respuesta
2

Para alimentar una base hay varios detalles a considerar, pero básicamente sería:

- Encontrar la primer fila libre (si cada registro vá al final de la base)

- O insertar una fila al inicio y esa será la fila destino

En cualquier modo, ese nro de fila se guarda en una variable, digamos 'filax'

El pase se hará por cada campo del formulario y a cada col de la hoja base, por ej:

Activesheet.range("A5").Copy destination:=Sheets("Base").Cells(filax,1)

Esto copia en la filax, col A. Luego repetirás para el resto de los campos incrementando la col en la referencia Cells(filax, 2) y así con el resto.

Si los campos del formulario deben ir en varias filas (x ej copiar un rango de prod), la copia se hará del rango completo y con destino a la primer celda: por ej:

Activesheet.range("H2:M20").Copy destination:=Sheets("Base").Cells(filax,7)

Nota: Si tu formulario tiene algo especial, debes aclarar este aspecto en una nueva consulta, indicando todas las ref posibles para entregarte instrucciones precisas.

Con respecto a limpiar el form (es otro tema pero x esta vez te lo dejo pasar), podes usar una sola instrucción para todas las celdas:

ActiveSheet.range("A5, B3, H2:M20, X10")=""

Tené presente de no incluir en estos rangos aquellas celdas que pudieran tener fórmula.

Como no usé Clear no se te borrarán formatos, solo contenidos.

Muchas gracias por tu información, pero si la base de datos q deseo alimentar esta en otro libro, por ejemplo:

El formato llamado "Aprovechamiento" esta guardado en:

"C:\Users\Documents\Aprovechamiento.xlsx"

Y la base de datos para alimentar esta en:

"C:\Users\Documents\Consolidado.xlsx"

Como seria el comando?

Gracias.

En primer lugar ya lo debes tener abierto al libro destino. Tendrás que incluir estas líneas antes del End Sub en tu rutina de Imagen si vas a usar solo este botón para todo:

'guardo el nombre del libro activo para poder regresar (*)

libro1= activeworkbook.name

workbooks.Open "C:\Users\Documents\Consolidado.xlsx"

libro2 = activeworkbook.name 'aquí guardo el nbre del libro destino que acabo de abrir

'selecciono la hoja destino

Activeworkbook.sheets("tu_Hoja").Select

'guardo la primer fila libre

filax=activesheet.range("A65536").End(xlup).Row +1

'regreso a mi libro para comenzar el pase

Workbooks(libro1). Activate

Activesheet.range("A5").Copy destination:=Workbooks(libro2).Sheets("Base").Cells(filax,1)

'sigue el resto

Armá el código, probalo y si luego te queda algún detalle dejame una nueva consulta en el tablón una vez finalizada ésta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas