jueves, 31 de enero de 2008

Excel y Visual Basic .Net

Muchas veces resulta útil acceder a datos de Excel desde una aplicación Visual Basic, ya sea para leer datos o para exportar información que ha sido procesada por el programa. Hacerlo es muy sencillo: basta con agregar la referencia de Excel y escribir un sencillo código.

Lo primero es agregar la referencia a Microsoft Excel. Para ello hay que ir a las propiedades del proyecto, pinchar en referencias, agregar, buscar las de tipo COM y seleccionar de la lista
Microsoft Excel 11.0 Object Library.

Ahora, con este sencillo código tendremos acceso a Excel:

Dim m_Excel As Microsoft.Office.Interop.Excel.Application
Dim strRutaExcel As String

strRutaExcel = "C:\libro.xls"

m_Excel = CreateObject("Excel.Application")
m_Excel.Workbooks.Open(strRutaExcel)
m_Excel.Visible = False 'Dejamos el libro oculto

'Mostramos el valor de la celda 1,1 del primer libre
MsgBox(m_Excel.Worksheets("Hoja1").Cells(1, 1).Value)

'Escribir en una celda
m_Excel.Worksheets("Hoja1").cells(3, 3).value = "prueba"

'Guardamos los cambios del libro activo
m_Excel.Application.ActiveWorkbook.Save()
'Nota: Hay una instruccion como esta:
m_Excel.Application.ActiveWorkbook.SaveAs

'Eliminamos la instancia de Excel de memoria
If Not m_Excel Is Nothing Then
m_Excel.Quit()
m_Excel = Nothing
End If

Espero que os sea útil. Hoy día Excel está muy extendido y bastante a menudo tengo que recurrir códigos como este para poder conectar Microsoft Excel con algún programa de Visual Basic.

12 comentarios:

Anónimo dijo...

pregunta pregunta como determino el tamaño el rango de las celdas activas osea donde termina el archivo osea la fila que esta hasta abajo del texto

Unknown dijo...

Pues me temo que no hay manera eficiente de hacerlo. Prueba con un bucle while hasta que te encuentres una celda vacía o un grupo de ellas.

Lucesita09 dijo...

hola... oye no entiendo eso de las propiedades para agregar la libreria en dnd esta o q??....ayuda por favor

Andrés dijo...

Hola. Podrías ayudarme?
Me manda el siguiente error
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

cuando intento abrir el archivo excel


m_Excel.Workbooks.Open(strRutaExcel)

Unknown dijo...

¿has mirado si tienes bien agregada la referencia COM de Excel? Quizá tengas que agregar otra llamada Microsoft Office.

Anónimo dijo...

Eso te ha pasado porque no has agregado la libreria de excel que es el primer paso que mencionan

Unknown dijo...

Muy buen post gracias por la ayuda me sirvio de mucho

Unknown dijo...

muy buen pos de gran ayuda

Unknown dijo...

muy buen post gracias de gran ayuda

Unknown dijo...

para agregar la libreria de excel le das en project y hasta abajo viene windowsAplicationpropities, te va abrir una ventana y dentro,existe una pestaña que dice COM

Unknown dijo...

Y COMO PUEDO HACER PARA REMPLAZAR EL VALOR DE UN TEXBO EN UNA CASILLA DE EXCEL?

Anónimo dijo...

como puedo connectar excel 2013 con visual 2012