Guardar datos en Excel desde Visual Basic

Tengo una consulta sobre como guardar los registros cargados de un formulario en un archivo excel. Estoy usando una sentencia como esta:

Esto seria en el evento botón aceptar del formulario

Dim objExcel = CreateObject("Excel.Application")

objExcel.Visible = False
objExcel.Workbooks.Add()

'Hoja activa
Dim hoja = objExcel.ActiveSheet
Dim irow = 1 'Numero de fila
Dim titulo = 0
Dim xlibro As Object
hoja.Cells(titulo + 1, 1) = "Codigo"
hoja.Cells(titulo + 1, 2) = "Nombre"
hoja.Cells(irow + 1, 1) = txtcodigo.Text
hoja.Cells(irow + 1, 2) = txtnombre.Text
hoja.Cells(irow + 1, 3) = txtapellido.Text
hoja.Cells(irow + 1, 4) = txtnrodocumento.Text
hoja.Cells(irow + 1, 5) = txtseccion.Text
hoja.Cells(irow + 1, 6) = txtsueldo.Text
hoja.Cells(irow + 1, 7) = txtcasino.Text
'Opcional : damos formato
'Como ejemplo a la cabecera
hoja.Rows(1).Font.Bold = True
hoja.Rows(1).Font.Color = Color.Black 'Autoajustamos
hoja.Columns("A:Z").AutoFit()

objExcel.Visible = True
'Guardamos el archivo
objExcel.ActiveWorkbook.SaveAs("C:\Users\USER\Documents\Visual Studio 2012\Projects\SISTEMA DE SUELDO 2014\empleados.xlsx")
hoja = Nothing
xlibro = Nothing
objExcel = Nothing

Como hago para que lo registros cargados no se sobreescriban sino que sea una continuación.

¿Y cómo seria para poder volver a mostrar los datos ya cargados en el archivo excel?

1 Respuesta

Respuesta
1

Prueba inicializar la variable irow de esta manera para que se escriban lconsecutivamente:

irow=hoja.cells(1,1).currentregion.rows.count ' con esto obtienes el numero de filas con informacion en el documento

Luego seguirias como lo has planteado

hoja.cells(irow+1,1)=tctcodigo.Text

Lo probé y me sigue intentando sobreescribir el archivo.

La idea es que los datos cargados se añadan a los ya existentes.

Que raro, en mi caso se agregan los nuevos datos a la fila siguiente.

Prueba inicializar la variable de este modo:

irow = 1
Do While hoja.Cells(irow + 1, 1).Value <> ""
irow = irow + 1
Loop

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas