Desde el menú "archivo / guardar como", Excel nos permitirá elegir entre muchos formatos, incluyendo el "html / htm", lo que nos generará un archivo factible de ser visualizado posteriormente desde cualquier navegador. Creo que la mayor ventaja de esto es, sin lugar a dudas, levantar al servicio de hosting el libro y así compartir nuestro trabajo en un entorno colaborativo. Puedo realizar miles de cálculos y análisis desde Excel, publicando luego de forma muy sencilla los resultados, sin necesidad de contar con conocimientos en leguajes "web".
Pero un libro puede tener muchas hojas, tablas, datos.... y quizás se convierta en una tarea mas que tediosa, al margen de lidiar con formatos, estructuras, etc. ¿Que tal si seleccionamos una tabla, por ejemplo, y ejecutando una macro generamos un archivo .html a partir de dicha selección?
[+/-] Ver el resto / Ocultar
Vamos a suponer que poseemos la siguiente tabla, entre tantas, y deseamos generar un archivo html a partir de ella:
los pasos lógicos serían copiar la tabla en un nuevo libro y allí guardarlo como "html"
Primero repasemos los distintos tipos de acceso que utiliza visual basic para generar archivos de texto: secuencial, aleatorio y binario. Dado que el segundo es mas complicado y requiere "tipos de datos definidos por el usuario" y el segundo es útil en la manipulación de bits en imágenes, nos centraremos en el primero:
Secuencial: los datos se colocan, y valga la redundancia, "secuencialmente", o sea, uno detras de otro. Se procede de igual forma para la lectura: si tengo un archivo de 500 lineas y quiero leer la última, con este método deberé primero recorrer las 499 líneas previas. Parece que no, pero en realidad es muy útil.
Si especifico este método, deberé incluir si la acción a realizar será de lectura o escritura, lo cual se hace de tres formas:
a) output: sobreescribe cualquier dato existente dentro del archivo (escritura)
b) append: agrega información al final del archivo (escritura)
c) input: para leer el contenido del archivo. (lectura)
Como será el que utilizaré para generar el html, muestro el código de lo explicado hasta el momento:
Sub GenerarArchivo()
Dim Arch As Integer
'Ejemplos del acceso Secuencial:
'obtengo el numero libre de archivo:
Arch = FreeFile
'===================================================================
'la instrucción es Open "ruta del archivo" modo numero de archivo.
'en donde "modo" puede ser: output, append, input
'con Output sobreescribo cualquier información existente:
Open "C:\Users\unArchivoMas.txt" For Output As #Arch
'genero un bucle
For x = 1 To 50
'y escribo en el archivo mediante Print
Print #Arch, "esta es la linea " & x
Next x
Close #Arch
'===================================================================
'obtengo el numero libre de archivo:
Arch = FreeFile
'con Append agrego información a partir del último registro existente
'en el archivo
Open "C:\Users\unArchivoMas.txt" For Append As #Arch
For x = 1 To 50
'escribo en el archivo mediante Print
Print #Arch, "esta es la linea " & x
Next x
Close #Arch
'===================================================================
'obtengo el numero libre de archivo:
Arch = FreeFile
'con Input leo la información del archivo:
Open "C:\Users\unArchivoMas.txt" For Input As #Arch
'aqui indico que mientras no llegue al final del archivo
'(EOF= end of file) ejecute las instrucciones dentro del
'bucle:
While Not EOF(Arch)
'en la variable "texto" almaceno la línea del archivo
Line Input #Arch, texto
'y la vuelco a excel:
x = x + 1
Hoja2.Cells(x, 1).Value = texto
Wend
Close #Arch
End Sub
los dos primeros párrafos generan la siguiente estructura dentro del txt:
y el tercero, mediante el cual leemos y volcamos los datos a Excel, la siguiente:
Regresando a nuestra tabla, veamos los pasos a seguir para generar nuestro archivo html:
1) seleccionar la tabla
2) abrir el archivo en modo secuencial (output)
3) recorrer sus filas y volcar el contenido al archivo del punto 2. Aqui deberemos definir las etiquetas html que generarán la tabla.
4) cerrar el archivo
Esto, traducido a VBA, nos quedaría:
Ver Link al Archivo Generado
tengo que poner un link por las etiquetas html del archivo... me volvieron loco y no pude subirlas al blog
=(
(solo deben copiar y luego pegar el código en
VBA)
el resultado del código anterior nos arroja el siguiente resultado, visto desde el navegador:
listo, nuestra tabla de Excel en Html. Vean los colores que le dimos a cada fila y bordes de tabla, todos definidos dentro del código VBA
De más está decir que también nos será factible manejar Css (hojas de estilo) y hasta incorporar código javascript o php, para hacerlo funcionar al 100% sincronizado con nuestro sitio.
Quedan abiertas las consultas al respecto.
tengo una web en php que me guarda datos en MSSQL que leo desde excel atravez de macro pero cuando leo una tabla salen tags de html en los campos de espacios,tabulaciones y enter como hago para que no se vean y solo se vea la informacion
ResponderEliminarAnónimo: creo que necesitás hacer uso de la función de VBA Replace(). Copiá y pegá el siguiente código dentro de un módulo y ejecutalo. Verás como en A2 desaparecen los tags html que le indico; solo es cuestión que modifiques los parámetros a tu proyecto.
ResponderEliminarSub Reemplazar()
'defino un par de variable:
Dim TextoSucio, TextoLimpio As String
'dos constantes: una contiene el tag de apertura
'de tabla y la otra el tag de cierre
Const UnTag As String = "???"
Const OtroTag As String = "///"
'creo un texto cualquiera, que contiene tags html.
'estimo que estos datos los extraerás de MSSQL
TextoSucio = "???esta cadena no sirve///"
'colocamos en A1 el texto "sucio"
[a1].Value = TextoSucio
'ahora utilizo a Replace, que me solicita tres
'argumentos:
'1 el texto original
'2 el texto que quiero buscar (uso las constantes)
'3 el valor con el cual reemplazaré el segundo
'argumento:
TextoLimpio = Replace(TextoSucio, UnTag, "")
TextoLimpio = Replace(TextoLimpio, OtroTag, "")
'mostramos el resultado
[a2].Value = TextoLimpio
End Sub
avisame si te sirve
el cuadro de comentarios del blog no te permite ingresar tags html, por eso verás que usé ??? y /// en el ejemplo. cambialos en el proyecto y verás que funciona lo mismo.
ResponderEliminarHola Damian:
ResponderEliminarPodrias indicarme una forma para exportar en html una tabla dinamica sin que pierda las funciones de interactividad (desplegables, etc)?
Gracias de antemano
si mal no recuero, te vas a "guardar como...", y en tipo de archivo seleccionas "html". Hay que tildar la opción "agregar interactividad" y seleccionar "tabla dinámica". luego le das al botón "publicar", lo que te llevará a otro formulario con opciones varias, como por ejemplo cambiar la ruta de guardado y de que forma se actualizarán los datos. Ojo: dentro del directorio en donde guardas el archivo se crea una carpeta que contiene un par de archivos XML, fundamentales para que todo funcione correctamente. Luego, en IE, debes tener los controles web instalados... si no están no te preocupes, que un link te llevará a la página de Microsoft para su descarga.
ResponderEliminar