Viejo que pena que abuse de su confianza, lo que sucede es que estoy apenas aprendiendo visual... Tengo en un formulario un botón "llamado exportar" y dos textbox (fec_ini y fec_fin), deseo que dependiendo a ese rango de fecha me lleve a excel los registros que aparezcan en la BD cuando oprima el botón exportar. Osea: Fec_ini: 18/09/2008 "Desde las 07:00 am" Fec_fin : 19/09/2008 "Hasta las 06:59 am" Es decir un turno de 24 horas. Continuando, deseo que cuando oprima el botón EXPORTAR, me lleve a excel los registros que aparezcan en la BD según esas fechas. ¿Fui claro?
Primero que nada Un gusto conocerte, no se porque dices que abusas de la confianza pero no te hagas drama... estamos para ayudar... Los datos para exportarlos de Visual hacia Excel, lo haces de la siguiente manera, primero que nada, coloca un CommonDialog, un CommandButton, un MSHFlexGrid. Bien luego agrega un modulo y coloca este código: Public Sub ExportarGrid(Grid As MSHFlexGrid, FileName As String, FileType) Dim i As Long Dim Fs As Variant Dim a As Variant Dim Line As String Dim j As Long Dim wkbNew As Excel.Workbook Dim wkbSheet As Excel.Worksheet Dim Rng As Excel.Range On Error GoTo ErrHandler Screen.MousePointer = vbHourglass If FileType = 1 Then If Dir(FileName) <> "" Then Kill FileName End If On Error GoTo CreateNew_Err Set wkbNew = Workbooks.Add wkbNew.SaveAs FileName Set wkbSheet = wkbNew.Worksheets(1) Set Rng = wkbSheet.Range("A1:" + Chr(Grid.Cols + 64) + CStr(Grid.Rows)) For j = 0 To Grid.Cols - 1 For i = 0 To Grid.Rows - 1 Rng.Range(Chr(j + 1 + 64) + CStr(i + 1)) = Grid.TextMatrix(i, j) Next i Next j wkbNew.Close True GoTo NoErrors CreateNew_Err: wkbNew.Close False Set wkbNew = Nothing Resume ErrHandler Else On Error GoTo ErrHandler Set Fs = CreateObject("Scripting.FileSystemObject") Set a = Fs.CreateTextFile(FileName, True) For j = 0 To Grid.Rows - 1 For i = 0 To Grid.Cols - 1 Line = Line + Grid.TextMatrix(i, j) + vbTab Next i a.WriteLine (Line) Line = "" Next j a.Close End If NoErrors: Screen.MousePointer = vbDefault MsgBox "Exportado Correctamente!", vbOKOnly + vbInformation, "Atención!" Exit Sub ErrHandler: Screen.MousePointer = vbDefault MsgBox "No se pudo exportar Datos, asegurese de tener cerrada la hoja de calculo" & vbCrLf & "A la cual va a exportarlos..", vbOKOnly + vbCritical, "Atención: Error!" End Sub
Luego, en el formulario, en el boton de commando para exportar coloca este codigo: Private Sub Exportar_Click()' acá selecciona la hoja de Excel On Error GoTo Salir CommonDialog1.Filter = "Excel File(*.xls)|*.xls|Text File (*.txt)|*.txt" CommonDialog1.FilterIndex = 1 CommonDialog1.ShowSave ExportarGrid MSHFlexGrid1, CommonDialog1.FileName, CD.FilterIndex Salir: End Sub
Para realizar una prueba de los datos a exportar, en otro botón (este presiónalo antes de exportar los datos) es para rellenar unas celdas del MSHFlexGrid y así probar la función y verificar en la hoja de Excel que los datos han sido Exportados: Lo que hará será genera números aleatorios y agregarlos al Grid, es de prueba como dije..
Private Sub cmdRellenar_Click() Dim i As Integer Dim j As Integer MSHFlexGrid1.Rows = CInt((38 * Rnd) + 1) MSHFlexGrid1.Cols = CInt((2 * Rnd) + 1) For i = 0 To MSHFlexGrid1.Cols - 1 For j = 0 To MSHFlexGrid1.Rows - 1 MSHFlexGrid1.TextMatrix(j, i) = CStr((100 * Rnd) + 1) Next j Next i End Sub Luego de rellenarlo presionas el botón para exportar y verificas que los datos se hayan exportado, bien, mi duda es si sabes trabajar con consultas Sql, tal vez lo sepas, pero NO sepas trabajar con Visual y relacionando Access a través de esas consultas, por eso te pregunto, si alguna duda tienes, consúltame nuevamente,
Saludos, Hice tal cual como me dices, es más copie y pegue pero a ppenas mando a correr me sale un error en la primera linea del modulo diciendo: user-defined type not defined. No se si este ejemplo sea mucho para mi que estoy empzando, ¿pero tengo una duda donde están los campos que se van a exportar a excel? No manejo sql, trabajo con datacontrol, una bd de access. Espero tus comentarios.
En que parte te marca el error, debe ser algún componente que no tienes, el tema que un ejemplo tan simple para ti y que funcione no lo hay, al menos yo no tengo conocimiento de un código sencillo y que de el mismo resultado. Estoy seguro que algún componente te está faltando, indicame en que línea te da error o bien, que es lo que te marca en amarillo cuando lo depuras. Saludos. PD disculpa por la tardanza.