Reportes de Visual Basic a Excel

Lindurita
07 de Agosto del 2003
Quiero generar un reporte en excel a partir de una consulta hecha a una base de datos desde visual basic con instrucciones SQL. ?alguien me puede ayudar?

JH
07 de Agosto del 2003
HOLA

Rodrigo
07 de Agosto del 2003
hello mira es facil anota esto....

en un modulo escribe esto

Public objExcel As Excel.Application

Public Function Inicio_Excel() As Boolean
Dim I As Integer
Dim J As Integer

Set objExcel = New Excel.Application

objExcel.Visible = True 'lo hacemos visible
objExcel.SheetsInNewWorkbook = 1 'decimos cuantas hojas queremos en el nuevo documento
objExcel.Workbooks.Add ' añadimos el objeto al workbook

End Function


Public Function Formato_Excel(Num_Campos As Integer, Nombre_Campos() As String) As Boolean

With objExcel.ActiveSheet

'Formato de las celdas de los titulos
.Range(.Cells(3, 1), .Cells(3, Num_Campos)).Borders.LineStyle = xlContinuous
.Range(.Cells(3, 1), .Cells(3, 8)).Font.Bold = True

For I = 1 To Num_Campos - 1 Step 1
.Cells(3, I) = Nombre_Campos(I)
Next I
'hasta aki pa colocar los titulos

'a partir de aki ta claro que es pa darle el ancho a las celdas ;-)

.Columns("A").ColumnWidth = 25
.Columns("B").ColumnWidth = 35
.Columns("C").ColumnWidth = 30
.Columns("D").ColumnWidth = 20
.Columns("E").ColumnWidth = 15
.Columns("F").ColumnWidth = 15
.Columns("G").ColumnWidth = 10
.Columns("H").ColumnWidth = 10



End With
End Function
************************************************
y luego en el formulario





Option Explicit

Dim H As Integer
Dim V As Integer

Private Sub Command1_Click()


DataTabla.DatabaseName = App.Path & "db1_97.mdb"

aqui genera tu recordset

dim recordset as new adodb.recordset

SQL="Select * from clientes where rut='15732689'
recordset.open SQL,mibase

Dim Heading(8) As String 'aki vamos a guardar los nombres de los campos que despues pasamos a la funcion
Heading(0) = "Nombre"
Heading(1) = "Apellidos"
Heading(2) = "Direccion"
Heading(3) = "Poblacion"
Heading(4) = "Provincia"
Heading(5) = "Pais"
Heading(6) = "Telefono"
Heading(7) = "DNI"


Call Inicio_Excel 'Llamamos a la funcion que abre el workbook en excel
Call Formato_Excel(8, Heading()) 'llamamos a la funcion que da el formato al nuevo workbook

V = 5
H = 1

Do While Not Recordset.EOF 'esto nos sirve pa leer los datos desde
'la tabla de access para despues colocarlos en las celdas correspondientes
With DataTabla.Recordset
objExcel.ActiveSheet.Cells(V, H) = .Fields!nombre
objExcel.ActiveSheet.Cells(V, H + 1) = .Fields!apellidos
objExcel.ActiveSheet.Cells(V, H + 2) = .Fields!direccion
objExcel.ActiveSheet.Cells(V, H + 3) = .Fields!poblacion
objExcel.ActiveSheet.Cells(V, H + 4) = .Fields!provincia
objExcel.ActiveSheet.Cells(V, H + 5) = .Fields!pais
objExcel.ActiveSheet.Cells(V, H + 6) = .Fields!telefono
objExcel.ActiveSheet.Cells(V, H + 7) = .Fields!dni
V = V + 1
recordset.MoveNext
End With
Loop
Set objExcel = Nothing 'una vez hemos terminado descargamos el objeto

End If

End Sub