Sección de códigos , trucos y ejemplos para visual basic
<Volver> - Anterior - Siguiente
La rutina que exporta los datos al Html se llama Exportar_DataGrid_Html y tiene dos parámetros:
Sub Exportar_DataGrid_Html(Path As String, _
DataGrid As DataGrid)
El primer parámetro es la ruta y el nombre del Html a generar, y el segundo parámetro es el control Datagrid, obviamente con los datos ya cargados.
Nota: para obtener los nombres de los campos del DataGrid, se consulta la propiedad Caption de la propiedad Columns del dataGrid, y para obtener el valor de la celda actual, se consulta la propiedad CellValue de la propiedad Columns, y como indice se le pasa a CellValue, el número de la fila actual a la propiedad GetBookmark del dataGrid, por ejemplo:
Dato = DataGrid.Columns(Columna).CellValue(DataGrid.GetBookmark(Fila))
En un Form1:
En un Form2:
Por último un módulo bas que es el que tiene la Sub que exporta los datos.
Código fuente en el Form1
Option Explicit '*************************************************************************** '* Controles: tres CommandButton, un commonDialog, un WebBrowser en Form2, _ un Control DataGrid , un textBox llamado txt_sql, y la referencia Microsoft ADO '*************************************************************************** Private Sub Command1_Click() Dim Ruta As String With CommonDialog1 .CancelError = True .Filter = "Archivos Html|*.Html|Archivos Htm|*.htm" .FileName = vbNullString On Error Resume Next .ShowSave If Err.Number = 32755 Then Exit Sub End If On Error GoTo 0 If .FileName = "" Then Exit Sub 'Path para el archivo html que se carga en el WebBrowser del Form2 Form2.Path_Html = .FileName 'Se le pasa el path de la base de datos y el control Datagrid Call Exportar_DataGrid_Html(.FileName, DataGrid1) End With End Sub Private Sub Command2_Click() Dim sql As String ' Consulta SQL sql = txt_SQL If txt_SQL = vbNullString Then MsgBox "Falta escribir la consulta sql en el textBox", vbCritical Exit Sub End If With CommonDialog1 .Filter = "MDB|*.mdb" .ShowOpen If .FileName = "" Then Exit Sub ' Carga los datos en el DataGrid Call Cargar_DataGrid(.FileName, sql, DataGrid1) End With End Sub 'sub que carga los datos en el control DataGrid Sub Cargar_DataGrid(Path As String, _ sql As String, _ DataGrid As DataGrid) Dim cn As Connection Dim rst As Recordset 'Nueva conexión ADO Set cn = New Connection cn.CursorLocation = adUseClient 'Abre la conexión cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" ' Nuevo recordset Set rst = New Recordset 'Abre el recordset rst.Open sql, cn, adOpenDynamic, adLockOptimistic ' Asigna al DataGrid el Recordset anterior Set DataGrid.DataSource = rst End Sub Private Sub Command3_Click() 'Abre el Formulario que tiene el control _ WebBrowser para ver la página HTML con los datos Form2.Show 1 End Sub Private Sub Form_Load() 'Caption de los CommandButton y otros Command1.Caption = " Exportar a Html " Command2.Caption = " Abrir base de dato " Command3.Caption = " Ver en WebBrowser " Me.Caption = " Ejemplo para exportar un DataGrid a Html " 'txt_SQL = "" End Sub
Código en el Form2 para cargar la página html en el webBrowser
Option Explicit Public Path_Html As String '*************************************************************************** '* Name : Código fuente del form2 '* Controles : Un Control webBrowser llamado webBrowser1 '*************************************************************************** Private Sub Form_Load() Me.Caption = Path_Html 'Carga el archivo html en el contol webbrowser WebBrowser1.Navigate Path_Html End Sub Private Sub Form_Resize() 'Redimensiona y posiciona el Control WebBrowser WebBrowser1.Move 0, 0, ScaleWidth, ScaleHeight End Sub
Código en el Módulo bas ( Sub para exportar el DataGrid )
'***************************************************************************
'* Código del módulo bas para exportar el control DataGrid
a un Html
'***************************************************************************
'Recibe la ruta y nombre del archivo donde crear el HTML, y el DataGrid
Sub Exportar_DataGrid_Html(Path As String, _
DataGrid As DataGrid)
On Error GoTo ErrSub
Dim codigo_Html As String
Dim Fila As Integer
Dim Columna As Integer
Dim fname As String
Dim f As Integer
Dim Dato As Variant
Screen.MousePointer = vbHourglass
'Color de la Tabla y el borde
codigo_Html = "<TABLE width=100% BORDER=0>" & vbCrLf
'Crea los Encabezados de columna
codigo_Html = codigo_Html & "<TR bgcolor=#000000> "
& vbCrLf
'Recorre las columnas del DataGrid
For Columna = 0 To DataGrid.Columns.Count - 1
codigo_Html = codigo_Html & " <TH><font color=#FFFFFF>"
& _
DataGrid.Columns(Columna).Caption & "</TH>" & vbCrLf
Next Columna
codigo_Html = codigo_Html & "</TR>" & vbCrLf
' Recorre las filas y las columnas y genera el _
etiquetado y lo guarda en la variable ( codigo_Html )
For Fila = 0 To DataGrid.ApproxCount - 1
codigo_Html = codigo_Html & "<TR bgcolor=#D3D3D3 > "
& vbCrLf
For Columna = 0 To DataGrid.Columns.Count - 1
'Este es el dato actual del datagrid
Dato = DataGrid.Columns(Columna).CellValue(DataGrid.GetBookmark(Fila))
codigo_Html = codigo_Html & " <td><font color=#000000>"
& Dato & "</TD>" & vbCrLf
Next
codigo_Html = codigo_Html & "</TR>" & vbCrLf
DoEvents
Next
'Cierra las etiquetas del codigo_Html
codigo_Html = "<HTML><HEAD></HEAD><BODY BGCOLOR=#999999>"
& vbCrLf & _
codigo_Html & "</BODY></HTML>"
' Graba el archivo en disco
f = FreeFile
'Abre y Crea el archivo Html
Open Path For Output As f
'Crea el archivo HTML
Print #f, codigo_Html
Close
MsgBox " Datagrid exportado ", vbInformation
Screen.MousePointer = vbNormal
Exit Sub
ErrSub:
MsgBox " Error al exportar Datagrid : " & Err.Description,
vbCritical
Screen.MousePointer = vbNormal
End Sub
Nota: para indicar los colores de las celdas y tablas del archivo Html, se podría añadir dichos parámetros a la Sub que exporta. Los parámetros podrían ser de tipo Long para los colores, pero abria que convertir dichos valores en un formato Hexadecimal en formato Html, por ejemplo:
Private Function Obtener_Color_Hexadecimal(ByVal Color As Long) As String Dim Azul As Byte, Verde As Byte, Rojo As Byte Azul = (Color And 16711680) / 65536 Verde = (Color And 65280) / 256 Rojo = Color And 255 Obtener_Color_Hexadecimal = "#" & _ Hex$(Rojo) & _ Hex$(Verde) & _ Hex$(Azul) End Function
y para obtener el color:
Private Sub Command1_Click() MsgBox Obtener_Color_Hexadecimal(vbBlue) End Sub
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar