Hola: Necesito generar un archivo excel a partir de un formulario de VB. Gracias por tu ayuda
Respuesta de denciso
1
1
denciso, Soy una persona multifacética, tanto manejo la informática,...
Checa el siguiente código por si te sirve. Private Sub Exporta_Excel() Dim oObjetoExcel As Object Dim iCol As Integer Dim iContRengDatos As Integer Dim iContRengExcel As Integer Dim iResult As Integer Dim pszCelda As Variant On Local Error GoTo Muestra_Error 'Título del diálogo mdiPrincipal!dlgGeneralMDI.DialogTitle = "Exportar Archivo..." 'Se inicializa el Nombre del Archivo mdiPrincipal!dlgGeneralMDI.FileName = NULL_STRING mdiPrincipal!dlgGeneralMDI.CancelError = False 'Tamaño Máximo del Archivo mdiPrincipal!dlgGeneralMDI.MaxFileSize = 30000 'Tipos de Archivos mdiPrincipal!dlgGeneralMDI.Filter = "Excel (*.xls)|*.xls" 'Extensión por vbDefault mdiPrincipal!dlgGeneralMDI.DefaultExt = ".xls" 'Banderas mdiPrincipal!dlgGeneralMDI.FLAGS = OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST Or OFN_CREATEPROMPT Or OFN_OVERWRITEPROMPT Or OFN_NOREADONLYRETURN 'Acción de Salvar el Archivo mdiPrincipal!dlgGeneralMDI.Action = DLG_FILE_SAVE If (mdiPrincipal!dlgGeneralMDI.FileName <> NULL_STRING) Then 'Se crea el Objeto Set oObjetoExcel = CreateObject("Excel.sheet") mdiPrincipal.stsBarMdi.Panels(1) = "Comunicación Establecida" 'Se posiciona al Spred de Datos en el primer renglón sprDatos.Row = NULL_INTEGER 'Se asigna el ancho de las columnas For iCol = 1 To sprDatos.MaxCols oObjetoExcel.worksheets(1).cells(iCol).ColumnWidth = sprDatos.ColWidth(iCol) Next mdiPrincipal.stsBarMdi.Panels(1) = "Exportando Datos..." 'Se exportan los datos del Spread de Parámetros iContRengExcel = 1 For iContRengDatos = 1 To sprParametros.MaxRows For iCol = 1 To sprParametros.MaxCols iResult = sprParametros.GetText(iCol, iContRengDatos, pszCelda) oObjetoExcel.worksheets(1).cells(iContRengExcel, iCol).Value = pszCelda Next iContRengExcel = iContRengExcel + 1 Next 'Se exportan los datos del Spread de Datos For iContRengDatos = NULL_INTEGER To sprDatos.MaxRows For iCol = 1 To sprDatos.MaxCols iResult = sprDatos.GetText(iCol, iContRengDatos, pszCelda) oObjetoExcel.worksheets(1).cells(iContRengExcel, iCol).Value = pszCelda Next iContRengExcel = iContRengExcel + 1 Next mdiPrincipal.stsBarMdi.Panels(1) = "Exportación Finalizada" 'Se salva a un Archivo el Objeto oObjetoExcel.SaveAs mdiPrincipal!dlgGeneralMDI.FileName End If mdiPrincipal.stsBarMdi.Panels(1) = "Listo" Exit Sub Muestra_Error: Call Muestra_Error_OLE Exit Sub End Sub