Descarga contenido exclusivo en
Ofimática y Programación + Tecnología

domingo, 22 de julio de 2012



Visual Basic 2010: Guardar .xls como .htm


Tengo la siguiente caso: un archivo llamado Informe.xls dos archivos a.xls y b.xls que serán modificados por dos personas el archivo I... thumbnail 1 summary
Tengo la siguiente caso:

  • un archivo llamado Informe.xls
  • dos archivos a.xls y b.xls que serán modificados por dos personas
  • el archivo Informe.xls esta vinculado a a.xls y b.xls y se modifica automaticamente según se modifican a.xls y b.xls
  • los jefes en la empresa no desean que el archivo informe se este abriendo para consultarlo, quieren solamente visualizarlo (sin invertir un centavo en un visor de archivos o un componente para VB .NET que logre esto)

Investigando un poco encontré una solución:



Visualizar el archivo Informe.xls en un control WebBrowser

Sin embargo, no quiero tener que estar cada día abriendo Informe.xls y guardarlo como página web, de no ser así cada que olvide actualizar el htm los jefes verán una versión des actualizada. Quiero que esto sea automático por parte del visor que programare.

Lo del WebBrowser en sencillo y no entrare en detalles en eso. Lo que investigue como hacer y comparto con ustedes es como hacer una copia de un archivo .xls a .htm a través de programación para no tener que estar cada día abriendo el archivo y guardándolo como página web. Si es solo un archivo no sería molesto pero en algunos casos pueden ser muchos archivos y es mejor automatizar la tarea.

El siguiente código lo realiza:

Imports Microsoft.Office.Interop

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlBooks As Excel.Workbooks
        Dim xlSheet As Excel.Worksheet
        Dim xlSheets As Excel.Sheets
        xlApp = CType(CreateObject("Excel.Application"), Excel.Application)

        xlApp.Visible = False 'no mostrar cuando se abre Informe.xls para guardarlo como página web
        xlApp.DisplayAlerts = False 'desactivar los mensajes: "Guardar cambios...", "Sobreescribir archivo...", etc.
        xlBooks = xlApp.Workbooks
        xlBooks.Open(My.Application.Info.DirectoryPath & "\Informe.xls") 'abrir el archivo Informe.xls

        xlBook = xlBooks.Item(1)
        xlSheets = xlBook.Worksheets
        xlSheet = CType(xlSheets(1), Excel.Worksheet)

        xlSheet.SaveAs(My.Application.Info.DirectoryPath & "\Informe.htm", Excel.XlFileFormat.xlHtml) ' guardar Informe.xls como página web
        xlBook.Close()
        xlApp.Quit()
    End Sub
End Class

Recuerden también agregar la referencia a Microsoft Excel 14.0 Object Library, creo que a mi me sale este porque tengo instalado Office 2010, con otro Office no se si funciona este código.

Para probarlo realicen cambios en Informe.xls, guárdenlo, después ejecutan la aplicación y al presionar el botón veran que se crea Informe.htm con los cambios realizados y así esta listo para ser visualizado en un control WebBrowser.











POPULARES EN LA RED
POPULARES EN LA RED






No hay comentarios

Publicar un comentario