Exportar datos de un programa de VisualBasic.net a Excel

Nota Vista 42.801 Veces

En este artículo se muestra cómo automatizar Microsoft Excel y cómo rellenar un rango de celdas con un Textbox y con un listview.

1. Iniciaremos Microsoft Visual Studio .NET.

2. En el menú Archivo, haga clic en Nuevo y, después, en Proyecto. Seleccione Aplicación para Windows en los tipos de proyecto de Visual Basic. De forma predeterminada, se crea Form1.

3. Agregue una referencia a la Biblioteca de objetos de Microsoft Excel. Para ello, siga estos pasos:

  1. En el menú Proyecto, haga clic en Agregar referencia.
  2. En la ficha COM, busque la Biblioteca de objetos de Microsoft Excel y haga clic en Seleccionar.
  3. Haga clic en Aceptar en el cuadro de diálogo Agregar referencias para aceptar sus selecciones. Si se le pregunta si desea generar contenedores para las bibliotecas seleccionadas, haga clic en .

4. En el Form1 he agregado un TextBox  y un ListView que son los usare para exportar los datos a Excel. Y un botón que es el encargado de generar la acción.

5 . En el código del botón agregare todo el código,  es bastante sencillo y lo he comentado para aclarar que funciona cada línea importante.

 Visual Basic |  copy code |? 
  1. 'Variables locales
  2. Dim oExcel As Object
  3. Dim oBook As Object
  4. Dim oSheet As Object
  5. 'Iniciar un nuevo libro en Excel
  6. oExcel = CreateObject("Excel.Application")
  7. oBook = oExcel.Workbooks.Add
  8. 'Agregar datos a las celdas de la primera hoja en el libro nuevo
  9. oSheet = oBook.Worksheets(1)
  10. ' Agregamos Los datos que queremos agregar
  11. oSheet.Range("A3").Value = TextBox1.Text
  12. ' Esta celda tendra los datos del textbox
  13. oSheet.Range("A10").Value = "CODIGO"
  14. ' estas celdas por defecto solo seran para identificar cada columna
  15. oSheet.Range("B10").Value = "TIPO"
  16. oSheet.Range("C10").Value = "DESCRIPCION"
  17. oSheet.Range("D10").Value = "MODELO"
  18. oSheet.Range("E10").Value = "REGIS"
  19. oSheet.Range("F10").Value = "DISPO"
  20. 'Desde aqui empezaremos a exportar la lista
  21. If ListView1consul2.Items.Count > 0 Then
  22. ' primero verificamos cuantas filas tiene la lista
  23. Dim col As Integer = 11 empezaremos en el libro de excel a partir de la celda 11
  24. Dim i As Integer ' for para empezar a recorrer la lista
  25. For i = 0 To ListView1consul2.Items.Count
  26. If i = ListView1consul2.Items.Count Then
  27. Exit For
  28. End If
  29. ' estas son las columnas que usaremos y el contador nos ira cargando una a una cada fila
  30. Dim a As String = "A" + col.ToString + ""
  31. Dim b As String = "B" + col.ToString + ""
  32. Dim c As String = "C" + col.ToString + ""
  33. Dim d As String = "D" + col.ToString + ""
  34. Dim j As String = "E" + col.ToString + ""
  35. Dim f As String = "F" + col.ToString + ""
  36. oSheet.Range(a).Value = ListView1consul2.Items(i).SubItems.Item(0).Text.ToString
  37. oSheet.Range(b).Value = ListView1consul2.Items(i).SubItems.Item(1).Text.ToString
  38. oSheet.Range(c).Value = ListView1consul2.Items(i).SubItems.Item(2).Text.ToString
  39. oSheet.Range(d).Value = ListView1consul2.Items(i).SubItems.Item(3).Text.ToString
  40. oSheet.Range(j).Value = ListView1consul2.Items(i).SubItems.Item(4).Text.ToString
  41. oSheet.Range(f).Value = ListView1consul2.Items(i).SubItems.Item(5).Text.ToString
  42. col = col + 1
  43. ListView1consul2.Items.Remove(ListView1consul2.Items.Item(i))
  44. ' removemos cada el elemento esto es solo si desean hacerlo
  45. ' otra opcion es poner el contador positivo y no eliminar el elemento de la lista
  46. i = i − 1
  47. Next
  48. End If
  49. ' hacemos visible el documento
  50. oExcel.Visible = True
  51. oExcel.UserControl = True
  52. 'Guardaremos el documento en el escritorio con el nombre prueba
  53. oBook.SaveAs(Environ("UserProfile") & "\desktop\Prueba.xls")

Aquí encontraran el código del proyecto completo.

Proyectovbmundo

Angel Gomez Angel Gomez  (1 Posts)

Estudiante de 10° trimestre de Ingeniería de Sistemas de la Universidad Metropolitana, Caracas-Venezuela.



34 Responses

  1. Carlos peña dice:

    Excelente aporte, de verdad era lo que necesitaba sin embargo, me gustaría saber si tienes información o puedes publicar algo sobre los instaladores o los .exe en visualbasic.net ya que desde hace tiempo he tenido problema con eso y no he encontrado una buena información sobre ese tema.

    Muchas gracias

    saludos.

    • Angel Gomez Angel Gomez dice:

      Buenos. Días Carlos

      Me alegro que la información te funcione. Esa es la idea principal y claro que si con mucho gusto en la próxima nota puedo agregar a este proyecto. Del mismo modo agregare algunas otras herramientas que considero pueda ser de utilidad.

      Saludos.

  2. Ali dice:

    disculpa, ¿como le hago para incrementar el tamaño de una celda desde código?

    • Angel Gomez Angel Gomez dice:

      disculpa la demora solo que habia estado alejado de la pagina por motivos personales. de igual forma tratare de responder tu pregunta

      como puedes ver en la linea de codigo 57 encontraras la celda donde te posicionas en el excel ejemplo A7

      EL A representa la letra y col es un integer que aumentamos con un ciclo de repetición iniciado en el ejercicio en 11. Sin embargo como concatenamos “A” + col tenemos que usar la funcion .ToString para convertir el mismo en un string y poder unir todo

      Dim a As String = “A” + col.ToString + “”

      si tienen alguna duda con gusto las aclarare mejor si no me hice entender

  3. hugol dice:

    muchiisimas gracias es precisamente lo que buscaba

  4. olaf dice:

    ola q tal muy buen aporte y otra tu no sabes como puedo aca en mismo en visual hacer exporataciones de hojas de excel desde una interfaz de visual a una bd de sql server espero tu ayuda amigo

    gracias saludos !!!!!!!

  5. R I K Y S A dice:

    E X E L E N T E . . .

  6. Francisco Navarro dice:

    Alguna vez han renombrado un archivo XLSX (archivo.xlsx) a un ZIP (archivo.zip) es interesante ver como un archivo de excel (2007 en adelante) es el conjunto de varios xml por lo tanto crear tu archivo de excel sin depender de la instalación de office es mas sencillo guardando un archivo xml por cada “hoja de excel” los metes dentro de una carpeta “xl\worksheets” la zipeas y listo, tienes un documento que no depende de tener office y sobre todo que la versión de office sea compatible con la que tu compilaste en tu VB.Net, saludos (por cierto si no saben como hacer un zip aqui les dejo un link para hacer zips facilmente http://dotnetzip.codeplex.com/)

  7. ANTONIO CRUZ dice:

    EXELENTE DE MUCHA AYUDA.
    PERO NO TENDRAS OTRO QUE TE EXPORTE PERO A UN ARCHIVO DE EXEL EN ESPESIFICO

  8. edson dice:

    hola , como lo hago ocupando un gridview ???

  9. Carlos dice:

    Hola excelente aporte, pero tengo un problema, VB me dice que no se a declarado el nombre “minus”, de que tipo es para probar declarando la variable??

    • Angel Gomez Angel Gomez dice:

      Hola que tal carlos gracia por tu aporte. Acabo de ver un error en la linea de codigo 89 que es donde me indicas remplaza esa linae ” i = i − 1″ por ” i = i – 1 ” de igual forma en el zip puedes ver el proyecto completo funcionando

  10. eric dice:

    hola esta bueno entodos les agradeceria que me mandaran post a mi correo estoy empesando a aprender a programar en visual nececito ayuda

  11. JUAN CARLOS NAVARRO dice:

    hola oye tendras un ejemplo con TrueDBGrid saludos y te agradezco tu respuesta

  12. viviana dice:

    excelente aporte,oye tengo una pregunta esto tambien funciona en un aplicativo .net web?

  13. Fabio dice:

    Buen dia para todos, porfavor si alguien sabe como enviar los datos de una consulta para que ubicar los digitos por cada celda y que estos se recuadren. Similar a los formatos fisicos donde te piden colocar letra e letra por cada cuadro. He pensado en tener la plantilla en excel. Pero no se el procedimiento para que cada letra o digito se ubique cada celda. agradezco la colaboración de Uds. bendiciones

  14. leo dice:

    Se ve interesante lo voy a probar

  15. Buenas tardes me gustaría lo siguiente:

    Copiar 3 celdas de excel y pegarlas en 3 textbox

    uso vb.net 2010

  16. José Guerrero dice:

    Buenas noches,
    Gracias por la información. Estoy introduciendome en el mundo de visual studio 2012 y el artículo me ha ayudado mucho. El código funciona maravillosamente.
    Por otro lado, quería expresar que para mí es mas facil trabajar por índices que por rangos. por ejemplo, si uso un for para llenar por fila varios datos usaría un código como este:

    For fila= inicio to fin
    osheet.cells(fila,1).value=dato1
    osheet.cells(fila,2).value=dato2
    osheet.cells(fila,3).value=dato3
    ‘los datos pueden ser cualquier calculo o
    ‘los campos obtenidos de una consulta sql
    next

    Tal vez, muchos como yo también trabajan de esa forma.
    Espero les sea útil la información.

    Exitos

  17. Juan carlos dice:

    ola que tal oye un tutorial q me recomiendes bueno
    para programas en vs.net

  18. Ezequiel dice:

    Saludos, muy exceletente tutorial ni de la pagina de somporte de Microsoft he encontrado un ejemplo tan bueno como como este, bendiciones

  19. Carlos Galaz dice:

    Muy buen aporte solo una duda como puedes cambiar la propiedad Saveas para guardar el archivo en una ruta que tu eligas con un SaveFileDialog y que no este de manera predeterminada como en el ejemplo???

  20. josue blanco dice:

    yo quisiera saber como hacer para abrir un fichero externo excel y que se deposite toda la informacion en un datagridview

  21. Alejandro dice:

    Hola, muy buen aporte…muchas gracias muy bien explicado…ahora quisiera saber si puedes ayudarme, lo que quiero es vincular textbox de un form en VB, a una tabla echa en Excel. la tabla tendria 18 columnas aprox, y me gustaria que haya 1 texbox para cada columna. me podrias hacer un codigo? o guiarme?…gracias.
    espero tu respuesta.

  22. Oswaldo dice:

    Gracias por la aportación pero tengo un problema que no me deja hacerlo cuando el archivo ya existe continuar agregando celdas si no que me las reemplaza podrías decirme que linea tengo que cambiar para que no me borre lo anterior se que las posiciones de las celdas si las modifico pero no como me conserve el archivo anterior, gracias espero haber explicado bien.

  23. Gladys N dice:

    Excelente aporte me sirvió de mucho, gracias por compartirlo con todos, te deseo Éxitos en lo que hagas, muchas gracias. ;)

  24. WINKEY ODLARE dice:

    Hola. Alejandro. muy bien post.- fiajte que yo tengo un problema he ehcho una aplciacion en vba de Excel.. y me gustaría pasar todo o mejor dicho hacer lo de mi aplicación en vb. net. Nose si tu podrias ayudarme o guiarme como ahcerlo.-

    Gracias.

  25. WINKEY ODLARE dice:

    hola. Sorry opor cambuiarte el nombre Angel.. te dejo mi email para ver si me puedes ayudar,.
    winkeyodlare@gmail.com

  26. internauta dice:

    Me podrian ayudar a enviar la info de un dataset a un libro de excel ?

    Las hojas que no sean modificadas se conservan, las demas se reescriben o se insertan. Gracias

  27. darlin dice:

    es muy bueno tu aporte pero quisiera saber si se puede aser con un DataGridView y tambien como se puede importar los datos de excel a visual

  28. Nilthon Mayo dice:

    Yo tengo una duda, me gustaría hacer lo contrario, de un dato de excel guardarlo en un textbox. Lo que pretendo es guardar un dato de la celda seleccionada en excel a un textbox. Cómo puedo hacer eso???

  29. Antonio dice:

    Buen dia Angel
    Tengo un problema al correr el codigo con la instruccion de guardado de excel.
    Me marca que el archivo puede estar en uso o que la ruta del archivo no es valido

    Me puedes ayudar

    • Antonio dice:

      Ya revise Angel, yo corri tu mismo ejemplo, en vb.net 2005, pero yo tengo instalado el office 2010. Me marca el siguiente error
      oBook.SaveAs(Environ(“UserProfile”) & “\desktop\Prueba.xls”)

      no permite hacer el guardado. Ojala Me pudieras ayudar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Programacion Visual
CyberChimps