3.7.07

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.

17 comentarios:

kiteloop dijo...

Hola, muchas gracias por el ejemplo, es justo lo que buscaba, pero tengo un pequeño problemilla y es que no me reconoce como correcto la linea

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

concretamente lo que esta luego del As

Es correcto como esta?

Gracias

Anónimo dijo...

Lo q pasa es q no estas agregando la referencia q se menciona, si vuelves a leer, fijate en el apartado q tienes ire a proyecto-> agregar referiecia...... y todo lo demas

Anónimo dijo...

¡Hola que tal!

Segui tu consejo y para hacer una prueba puse tu codificacion, pero me marca un error

Línea 34: strRutaExcel = "C:\Conejito.xls"
Línea 35:
Línea 36: m_Excel = CreateObject("Excel.Application")
Línea 37: m_Excel.Workbooks.Open(strRutaExcel)
Línea 38: m_Excel.Visible = False 'Dejamos el libro oculto


A que se debe???
La verdad me urge esto, no se si podrian ayudarme por favor =)

Maricela Ramos dijo...

¡Hola que tal!

Segui tu consejo y para hacer una prueba puse tu codificacion, pero me marca un error

Línea 34: strRutaExcel = "C:\Conejito.xls"
Línea 35:
Línea 36: m_Excel = CreateObject("Excel.Application")
Línea 37: m_Excel.Workbooks.Open(strRutaExcel)
Línea 38: m_Excel.Visible = False 'Dejamos el libro oculto


A que se debe???
La verdad me urge esto, no se si podrian ayudarme por favor =)

LEONX dijo...

me da un error cuando trata de abrir el archivo excel.

o sea el código m:excel.workbooks.Open("")
no me funciona

me puedes ayudar?

Felipe

Anónimo dijo...

Gracias me ha sido de mucha ayuda

Anónimo dijo...

excelente, te agradezco mucho el ejemplo, me fue de gran ayuda

Anónimo dijo...

buenas, necesito hacer una aplicacion que me inserte datos en excel, dentro siempre de la misma pagina, mi pregunta es;
¿ A partir de el codigo mostrado anteriormente, es posible general dicha aplicacion? es que no tengo muchos conocimientos de programación y me urge...
Gracias.

ERICK FLOREZ M. dijo...

Elegante como el pegante... vacano gracias parce de todo corazon, que nota sirve full me saco de un lio de ultim hora con una tediosa base sql esa maldita programacion que a ultimo momento no funciona

ERICK FLOREZ M. dijo...

Elegante como el pegante... vacano gracias parce de todo corazon, que nota sirve full. me saco de un peo a ultima hora las malditas bases sql !GRACIAS! :-)

Anónimo dijo...

todo bien, solo que me da un Error en la linea:
MsgBox(m_Excel.Worksheets("Hoja1").Cells(1, 1).Value)
al parecer es por el "cells" :s
que puedo hacer al respecto?
gracias...

Dario Damian dijo...

He buscado por varios dias, este sin duda es el mejor ejemplo que he encontrado, muchas gracias, muy simple y entendible.

SSI dijo...

Gracias por el dato, muy claro lo que expones; tiene las funciones básicas para poder insertar registros desde excel a una base de datos :D

Flakinn dijo...

Muchisimas Gracias!!!
me gane unos pesitos por hacer esto

Anónimo dijo...

Muy buena ayuda, gracias!!!

Anónimo dijo...

Buena ayuda.. Muchas gracias !!

maialen dijo...

Hola me ha servido de mucho, pero necesito leer varias columnas y cada una guardarla en una variable. Nunca se cuantas filas tiene una columna.

¿Cómo puedo hacerlo?