Formato Excel

Hola denciso, mi pregunta tal vez gualde relación con la que he visto que respondes hace unos días.
Mi informe de facturas lo tengo dentro de una aplicación en visual con formato Crystal Repols y necesito que sea en formato Excel ¿cómo lo podría hacer?
El nuevo informe en formato Excel ya lo tengo hecho, el archivo de llama Pedidos.xls
Te envío el procedimiento imprimir() que estoy utilizando para que tengas una idea,
lo tengo dentro de un módulo de clase "clsFacturas" que recibe la orden de un botón que tengo en un "frmFacturas"
Si me puedes ayudar te lo agradecería mucho. Hasta pronto Alf
Public Sub Imprimir()
With MDIForm1.CrystalReport1
.Connect = "DSN = BDBenessere"
.ReportFileName = App.Path & "\InformeFacturas.rpt"
.WindowTitle = "Facturas " & msNFactura
.WindowState = 2 '0-Normal,1-Minimizado,2-Maximizado
.CopiesToPrinter = 1
.SelectionFormula = "{FACTURAS.CODIGOFACTURA} = " & mlCodigoFactura
'Lanza el listado
.Action = 1
'limpiamos la formula para posteriores impresiones
.SelectionFormula = ""
End With
End Sub

1 respuesta

Respuesta
1
No recuerdo bien, pero creo que el mismo crystal reports tiene por ahí alguna opción de exportar el reporte a excel, pero si no la tiene puedes probar con el código que te anexo.
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
'Titulo del diálogo
mdiPrincipal!dlgPrinter.DialogTitle = "Exportar Archivo..."
'Se inicializa el Nombre del Archivo
mdiPrincipal!dlgPrinter.FileName = NULL_STRING
mdiPrincipal!dlgPrinter.CancelError = False
'Tamaño Máximo del Archivo
mdiPrincipal!dlgPrinter.MaxFileSize = 30000
'Tipos de Archivos
mdiPrincipal!dlgPrinter.Filter = "Excel (*.xls)|*.xls"
'Extensión por Default
mdiPrincipal!dlgPrinter.DefaultExt = ".xls"
'Banderas
mdiPrincipal!dlgPrinter.FLAGS = cdlOFNHideReadOnly Or cdlOFNPathMustExist Or cdlOFNCreatePrompt Or cdlOFNOverwritePrompt Or cdlOFNNoReadOnlyReturn
mdiPrincipal.stsBarMdi.Panels(1).Text = "Salvar archivo..."
'Acción de Salvar el Archivo
mdiPrincipal!dlgPrinter.ShowSave
If (mdiPrincipal!dlgPrinter.FileName <> NULL_STRING) Then
mdiPrincipal.stsBarMdi.Panels(1).Text = "Estableciendo Comunicación con Microsoft Excel..."
'Se crea el Objeto
Set oObjetoExcel = CreateObject("Excel.sheet")
mdiPrincipal.stsBarMdi.Panels(1).Text = "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).Text = "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).Text = "Exportación Finalizada"
'Se salva a un Archivo el Objeto
oObjetoExcel.SaveAs mdiPrincipal!dlgPrinter.FileName
End If
mdiPrincipal.stsBarMdi.Panels(1).Text = "Listo"
Exit Sub
Muestra_Error:
Call Muestra_Error_OLE
Exit Sub
End Sub
Saludos from México, City
David Enciso
e-mail: [email protected]
Bien David...
Lo primero que he hecho ha sido cambiar a Público el procedimiento para que reconozca la clsFacturas que viene la orden del frmFacturas de este modo:
Private Sub cmdImprimir_Click()
On Error GoTo Interrupcion
'moFacturas.Imprimir
moFacturas.Exporta_Excel
Exit Sub
Interrupcion:
MsgBox Err.Description
End Sub
-Al correrlo empieza con variable no definida mdiPrincipal!dlgPrinter.DialogTitle = "Exportar Archivo..."
-mdiPrincipal ¡¿Es mi MDIForm1? Lo he probado pero tampoco va con el "!".
Hasta pronto chao.Alf
La parte que comentas es porque tengo una forma MDI que tiene ese nombre mdiPrincipal y ahí tengo un control common dialog para poder permitir al usuario seleccionar un nombre de archivo que va a generar y con estos datos genero la exportación de datos a excel. Lo que tengo son unos controles llamados spread de far point para de ahí obtener los datos que quiero y listo.
Saludos
David Enciso
e-mail: [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas